Ворнас, падшее пламя
Зверь
Область: Ворота Галаи
monster dropped item rarity +% [1600]
monster slain experience +% [0]
Vornas, the Fell Flame
SpectreN
AreaВорота Галаи
Tagsbeast, Claw_onhit_audio, fast_movement, Огонь, mammal_beast, not_dex, not_int
Здоровье
313%
Сопротивление
75 -30 0 0
Damage
500%
Меткость
100%
Attack Distance
11 ~ 28
Время атаки
1.5 Second
Damage Spread
±20%
Опыт
250%
Model Size
160%
Type
FireBeastBoss
Metadata
FireBeastBoss
Уровень
56
Здоровье
11,756
Damage
794
Урон от чар
794
Меткость
1,588
Время атаки
1.5
Опыт
31,365
Minion Life
14,451
Minion Damage
2,563
Minion Armour
3,998
MeleeAtAnimationSpeedFire
Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Melee, ProjectilesFromUser
Обычная атака
Base Damage: 635–953
Время атаки: 1.5 сек.
40% физического урона становится уроном от огня
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]
EAAFireBeastSlashCombo
Перезарядка: 10 сек.
action attack or cast time uses animation length [1]
attack maximum action distance + [40]
EAAFireBeastMultiSlam
Перезарядка: 15 сек.
action attack or cast time uses animation length [1]
attack maximum action distance + [40]
DTTFireBeastLeapSlam
Spell, Movement
Время применения: 1 сек.
Перезарядка: 7 сек.
action attack or cast time uses animation length [1]
leap slam minimum distance [30]
skill maximum travel distance [50]
walk emerge extra distance [-7]
GAFireBeastBasicSlam
Triggerable, Attack
Base Damage: 635–953
Урон от атаки: 135%
Время атаки: 1.5 сек.
Перезарядка: 8 сек.
Наносит на 35% больше урона атаками
action attack or cast time uses animation length [1]
is area damage [1]
EAAFireBeastMultiSlamEnraged
Перезарядка: 15 сек.
action attack or cast time uses animation length [1]
attack maximum action distance + [60]
EASFireBeastEnragedImmolate
Перезарядка: 20 сек.
action attack or cast time uses animation length [1]
GAFireBeastFlameBreathe
Triggerable, Attack
Base Damage: 635–953
Урон от атаки: 110%
Время атаки: 1.5 сек.
Наносит на 10% больше урона атаками
100% физического урона становится уроном от огня
is area damage [1]
GAFireBeastGroundSlashEnraged
Triggerable, Attack
Base Damage: 635–953
Урон от атаки: 198%
Время атаки: 1.5 сек.
Наносит на 98% больше урона атаками
50% физического урона становится уроном от огня
base skill can be avoided by dodge roll [1]
base skill can be blocked [1]
is area damage [1]
GAFireBeastGroundSlash
Triggerable, Attack
Base Damage: 635–953
Урон от атаки: 165%
Время атаки: 1.5 сек.
Наносит на 65% больше урона атаками
25% физического урона становится уроном от огня
base skill can be avoided by dodge roll [1]
base skill can be blocked [1]
is area damage [1]
GAFireBeastMultiSlamFlameWave
Triggerable, Attack
Base Damage: 635–953
Урон от атаки: 115%
Время атаки: 1.5 сек.
Наносит на 15% больше урона атаками
100% физического урона становится уроном от огня
action attack or cast time uses animation length [1]
base skill cannot be avoided by dodge roll or blocked [1]
is area damage [1]
GAFireBeastMultiSlamFinalSlam
Triggerable, Attack
Base Damage: 635–953
Урон от атаки: 175%
Время атаки: 1.5 сек.
Наносит на 75% больше урона атаками
75% физического урона становится уроном от огня
action attack or cast time uses animation length [1]
base skill cannot be avoided by dodge roll or blocked [1]
is area damage [1]
GAFireBeastLeapImpact
Triggerable, Attack
Base Damage: 635–953
Время атаки: 1.5 сек.
action attack or cast time uses animation length [1]
is area damage [1]
MPSFireBeastVolcanoProj
Spell, Projectile, ProjectilesFromUser, Triggerable, Damage
Время применения: 1 сек.
active skill projectile speed +% variation final [10]
ballistic projectiles always bounce [1]
base is projectile [1]
monster projectile variation [1433]
projectile ballistic angle override [70]
projectile ballistic angle override variance [10]
projectile ballistic gravity override [1500]
projectiles not offset [1]
GSFireBeastVolcanoProjImpact
Triggerable, Spell, Damage
Время применения: 1 сек.
Наносит от 188.8 до 283.3 урона от огня
action attack or cast time uses animation length [1]
base skill can be avoided by dodge roll [1]
is area damage [1]
skill can be active blocked from all directions [1]
GTFireBeastVolcanoSpawner
Triggerable
action attack or cast time uses animation length [1]
GTFireBeastGeyserLine
Triggerable
action attack or cast time uses animation length [1]
GAFireBeastGeyserSlam
Triggerable, Attack
Base Damage: 635–953
Время атаки: 1.5 сек.
action attack or cast time uses animation length [1]
is area damage [1]
EGFireBeastProximitySingeCorpse
Triggerable
EGFireBeastProximityBurnCorpse
Triggerable
GAFireBeastBasicSlamSpammable
Triggerable, Attack
Base Damage: 635–953
Время атаки: 1.5 сек.
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

Object Type Codes

 
-- src\Data\Spectres.lua
minions["Metadata/Monsters/Goblins/Beast/FireBeastBoss/FireBeastBoss"] = {
    name = "Vornas, the Fell Flame",
    life = 3.13,
    fireResist = 0,
    coldResist = 0,
    lightningResist = 0,
    chaosResist = 0,
    damage = 5,
    damageSpread = 0.2,
    attackTime = 1.5,
    attackRange = 28,
    accuracy = 1,
    skillList = {
        "MeleeAtAnimationSpeedFire",
        "MPSFireBeastVolcanoProj",
        "GAFireBeastFlameBreathe",
        "GAFireBeastGroundSlashEnraged",
        "GAFireBeastGroundSlash",
        "GAFireBeastMultiSlamFlameWave",
        "GAFireBeastMultiSlamFinalSlam",
        "GAFireBeastLeapImpact",
        "GAFireBeastBasicSlam",
        "GSFireBeastVolcanoProjImpact",
        "GAFireBeastGeyserSlam",
        "GAFireBeastBasicSlamSpammable",
        "EAAFireBeastSlashCombo",
        "EAAFireBeastMultiSlam",
        "EAAFireBeastMultiSlamEnraged",
        "EASFireBeastEnragedImmolate",
        "EGFireBeastProximitySingeCorpse",
        "EGFireBeastProximityBurnCorpse",
        "GTFireBeastVolcanoSpawner",
        "GTFireBeastGeyserLine",
        "DTTFireBeastLeapSlam",
    },
    modList = {
    },
}
-- src\Data\Skills\spectre.lua
skills["MeleeAtAnimationSpeedFire"] = {
    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 = {
        "active_skill_base_physical_damage_%_to_convert_to_fire",
        "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] = {40, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["MPSFireBeastVolcanoProj"] = {
    name = "MPSFireBeastVolcanoProj",
    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 = {
        "monster_projectile_variation",
        "projectile_ballistic_angle_override",
        "projectile_ballistic_angle_override_variance",
        "active_skill_projectile_speed_+%_variation_final",
        "projectile_ballistic_gravity_override",
        "base_is_projectile",
        "ballistic_projectiles_always_bounce",
        "projectiles_not_offset",
    },
    levels = {
        [1] = {1433, 70, 10, 10, 1500, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GAFireBeastFlameBreathe"] = {
    name = "GAFireBeastFlameBreathe",
    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",
        "is_area_damage",
    },
    levels = {
        [1] = {100, baseMultiplier = 1.1, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GAFireBeastGroundSlashEnraged"] = {
    name = "GAFireBeastGroundSlashEnraged",
    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",
        "is_area_damage",
        "base_skill_can_be_blocked",
        "base_skill_can_be_avoided_by_dodge_roll",
    },
    levels = {
        [1] = {50, baseMultiplier = 1.98, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GAFireBeastGroundSlash"] = {
    name = "GAFireBeastGroundSlash",
    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",
        "is_area_damage",
        "base_skill_can_be_blocked",
        "base_skill_can_be_avoided_by_dodge_roll",
    },
    levels = {
        [1] = {25, baseMultiplier = 1.65, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GAFireBeastMultiSlamFlameWave"] = {
    name = "GAFireBeastMultiSlamFlameWave",
    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",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
        "base_skill_cannot_be_avoided_by_dodge_roll_or_blocked",
    },
    levels = {
        [1] = {100, baseMultiplier = 1.15, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GAFireBeastMultiSlamFinalSlam"] = {
    name = "GAFireBeastMultiSlamFinalSlam",
    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",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
        "base_skill_cannot_be_avoided_by_dodge_roll_or_blocked",
    },
    levels = {
        [1] = {75, baseMultiplier = 1.75, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GAFireBeastLeapImpact"] = {
    name = "GAFireBeastLeapImpact",
    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] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GAFireBeastBasicSlam"] = {
    name = "GAFireBeastBasicSlam",
    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.35, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GSFireBeastVolcanoProjImpact"] = {
    name = "GSFireBeastVolcanoProjImpact",
    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",
        "skill_can_be_active_blocked_from_all_directions",
        "base_skill_can_be_avoided_by_dodge_roll",
    },
    levels = {
        [1] = {0.80000001192093, 1.2000000476837, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GAFireBeastGeyserSlam"] = {
    name = "GAFireBeastGeyserSlam",
    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] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GAFireBeastBasicSlamSpammable"] = {
    name = "GAFireBeastBasicSlamSpammable",
    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",
        "base_skill_cannot_be_avoided_by_dodge_roll_or_blocked",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["EAAFireBeastSlashCombo"] = {
    name = "EAAFireBeastSlashCombo",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "attack_maximum_action_distance_+",
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {40, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["EAAFireBeastMultiSlam"] = {
    name = "EAAFireBeastMultiSlam",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "attack_maximum_action_distance_+",
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {40, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["EAAFireBeastMultiSlamEnraged"] = {
    name = "EAAFireBeastMultiSlamEnraged",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "attack_maximum_action_distance_+",
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {60, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["EASFireBeastEnragedImmolate"] = {
    name = "EASFireBeastEnragedImmolate",
    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["EGFireBeastProximitySingeCorpse"] = {
    name = "EGFireBeastProximitySingeCorpse",
    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["EGFireBeastProximityBurnCorpse"] = {
    name = "EGFireBeastProximityBurnCorpse",
    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["GTFireBeastVolcanoSpawner"] = {
    name = "GTFireBeastVolcanoSpawner",
    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["GTFireBeastGeyserLine"] = {
    name = "GTFireBeastGeyserLine",
    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["DTTFireBeastLeapSlam"] = {
    name = "DTTFireBeastLeapSlam",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
        [SkillType.Movement] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        spell = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "walk_emerge_extra_distance",
        "leap_slam_minimum_distance",
        "skill_maximum_travel_distance",
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {-7, 30, 50, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
monster dropped item rarity +% [1600]
monster slain experience +% [0]
FamilyMonsterActBoss
DomainsMonster (3)
GenerationTypeУникальный (3)
Req. level1
Stats
  • monster slain experience +% Min: 0 Max: 0 Global
  • monster dropped item rarity +% Min: 1600 Max: 1600 Global
  • Edit

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