Гурак, Клинок рассвета
Гуманоид
Область: Запечатанное подземелье
+1 к максимальному количеству установленных тотемов
kill traps mines and totems on death [1]
kill traps mines and totems on death [1]
% увеличение редкости выпадающих предметов
monster no map drops [1]
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]
kill traps mines and totems on death [1]
kill traps mines and totems on death [1]
% увеличение редкости выпадающих предметов
monster no map drops [1]
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]
Guraq, Daylight's Blade
Spectre | N |
---|---|
Area | Запечатанное подземелье, Запечатанное подземелье |
Tags | Чародейский, fire_affinity, has_two_hand_sword, has_two_handed_melee, human, humanoid, mail_armour, medium_height, medium_movement, melee, not_int, physical_affinity, ranged, red_blood, slashing_weapon, vaalsidearea_boss |
Здоровье
180%
Броня
+75%
Уклонение
+50%
Ailment Threshold
180%
Сопротивление
30 30 30 20
Damage
120%
Точность
100%
Шанс критического удара
+5%
Множитель критического удара
+130%
Attack Distance
6 ~ 14
Attack Time
1.5 Second
Damage Spread
±20%
Опыт
200%
Model Size
110%
Type
VaalSideAreaBossReligiousTemplar
Metadata
VaalSideAreaBoss5
The following values do not include map affix bonuses, monster buff bonuses, altar bonuses, atlas skill bonuses.
Уровень
68
Здоровье
11,580
Броня
50,383
Уклонение
7,109
Энергетический щит
0
Damage
448
Урон от чар
448
Точность
290
Attack Time
1.5
Опыт
20,510
Ailment Threshold
11,580
Chill
37
Shock
37
Brittle
207
Scorch
37
Sap
101
The following values are skill base values and do not include map affix bonuses, monster buff bonuses, altar bonuses, atlas skill bonuses, monster base damage(ex: The Maven 150% multiplier), monster rarity bonuses (ex: unique 70% more, unique attack 33% less).
ExileTemplarVaalThrownWeapon
Attack, RangedAttack, Projectile, ProjectilesFromUser, Vaal
Призрачный бросок ваал
Base Damage: 359–538
Шанс критического удара: 5%
Урон от атаки: 102%
Урон от атаки: 102.4%
Attack Time: 1.5 сек.
Перезарядка: 9 сек.
Герой бросает призрачную копию своего оружия ближнего боя. Копия летит по спирали, нанося удары оказавшимся на пути врагам.
Наносит на 2.4% больше урона атаками
Наносит на 70% меньше урона
11% увеличение урона снарядами
Выпускает снаряды по кругу
80% повышение скорости снаряда
Скорость атаки на 190% больше
base attack repeat count [5]
base is projectile [1]
projectiles not offset [1]
Наносит на 70% меньше урона
11% увеличение урона снарядами
Выпускает снаряды по кругу
80% повышение скорости снаряда
Скорость атаки на 190% больше
base attack repeat count [5]
base is projectile [1]
projectiles not offset [1]
ExileTemplarThrownWeapon
Attack, RangedAttack, Projectile, ProjectilesFromUser
Призрачный бросок
Base Damage: 359–538
Шанс критического удара: 5%
Attack Time: 1.5 сек.
Герой бросает призрачную копию своего оружия ближнего боя. Копия летит в заданном направлении и, вращаясь, возвращается к герою, нанося удары оказавшимся на пути врагам.
Наносит на 30% меньше урона
Выпускает дополнительных снарядов: 2
50% повышение скорости атаки
30% повышение скорости снаряда
base is projectile [1]
spell maximum action distance +% [-30]
Выпускает дополнительных снарядов: 2
50% повышение скорости атаки
30% повышение скорости снаряда
base is projectile [1]
spell maximum action distance +% [-30]
ExileTemplarFlameTotem
Spell, Projectile, ProjectilesFromUser, Damage, Trappable, Mineable, SummonsTotem, Fire
Тотем священного огня
Шанс критического удара: 5%
Эффективность добавленного урона: 20%
Время применения: 0.25 сек.
Герой устанавливает тотем, который выпускает потоки пламени во врагов.
Снаряды пронзают все цели
Время существования тотема 8 секунд(-ы)
275% увеличение здоровья тотемов от усиленных умений
Наносит от 112 до 167.9 урона от огня
Выпускает дополнительных снарядов: 3
Устанавливает тотем, который использует это умение
base active skill totem level [68]
base is projectile [1]
base skill is totemified [1]
base totem range [100]
totem art variation [-2]
Время существования тотема 8 секунд(-ы)
275% увеличение здоровья тотемов от усиленных умений
Наносит от 112 до 167.9 урона от огня
Выпускает дополнительных снарядов: 3
Устанавливает тотем, который использует это умение
base active skill totem level [68]
base is projectile [1]
base skill is totemified [1]
base totem range [100]
totem art variation [-2]
Melee
Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Multistrikeable, Melee, ProjectilesFromUser
Атака
Base Damage: 359–538
Шанс критического удара: 5%
Attack Time: 1.5 сек.
Герой наносит обычный удар.
skill can fire arrows [1]
skill can fire wand projectiles [1]
skill can fire wand projectiles [1]
MonsterProximityShield
Spell, Area, Duration, Triggerable, AreaSpell
Время применения: 1 сек.
Перезарядка: 18 сек.
Вы не можете получить прямой урон от врагов, находящихся за пределами купола
inside shield [#]
Базовая длительность - 8 секунд(-ы)
Object Type
version 2 extends "Metadata/Monsters/Monster"
Object Type Codes
version 2 extends "Metadata/Monsters/Monster" Life { on_death = "RemoveEffects();" }
-- src\Data\Spectres.lua minions["Metadata/Monsters/VaalSideAreaBosses/VaalSideAreaBoss5"] = { name = "Guraq, Daylight's Blade", life = 1.8, fireResist = 30, coldResist = 30, lightningResist = 30, chaosResist = 20, damage = 1.2, damageSpread = 0.2, attackTime = 1.5, attackRange = 14, accuracy = 1, weaponType1 = "Two Hand Sword", skillList = { "Melee", "ExileTemplarFlameTotem", "MonsterProximityShield", "ExileTemplarVaalThrownWeapon", "ExileTemplarThrownWeapon", }, modList = { }, } -- src\Data\Skills\spectre.lua skills["Melee"] = { 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", }, levels = { [1] = {levelRequirement = 1, statInterpolation = {}, cost = { }, }, }, } -- src\Data\Skills\spectre.lua skills["ExileTemplarFlameTotem"] = { name = "Holy Flame Totem", hidden = true, color = "1", baseEffectiveness = 0, incrementalEffectiveness = 0, description = "Summons a totem that fires a stream of flame at nearby enemies.", skillTypes = { [SkillType.Spell] = true, [SkillType.Projectile] = true, [SkillType.ProjectilesFromUser] = true, [SkillType.Damage] = true, [SkillType.Trappable] = true, [SkillType.Mineable] = true, [SkillType.SummonsTotem] = true, [SkillType.Fire] = true, }, statDescriptionScope = "skill_stat_descriptions", castTime = 0.25, baseFlags = { spell = true, projectile = true, totem = true, }, baseMods = { }, qualityStats = { }, stats = { "spell_minimum_base_fire_damage", "spell_maximum_base_fire_damage", "base_active_skill_totem_level", "totem_life_+%", "base_totem_duration", "base_totem_range", "number_of_additional_projectiles", "totem_art_variation", "is_totem", "base_skill_is_totemified", "base_is_projectile", "always_pierce", }, levels = { [1] = {0.80000001192093, 1.2000000476837, 3, 50, 8000, 100, 3, -2, critChance = 5, levelRequirement = 3, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [2] = {0.80000001192093, 1.2000000476837, 5, 60, 8000, 100, 3, -2, critChance = 5, levelRequirement = 5, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [3] = {0.80000001192093, 1.2000000476837, 8, 70, 8000, 100, 3, -2, critChance = 5, levelRequirement = 8, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [4] = {0.80000001192093, 1.2000000476837, 12, 80, 8000, 100, 3, -2, critChance = 5, levelRequirement = 12, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [5] = {0.80000001192093, 1.2000000476837, 15, 90, 8000, 100, 3, -2, critChance = 5, levelRequirement = 15, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [6] = {0.80000001192093, 1.2000000476837, 19, 100, 8000, 100, 3, -2, critChance = 5, levelRequirement = 19, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [7] = {0.80000001192093, 1.2000000476837, 20, 110, 8000, 100, 3, -2, critChance = 5, levelRequirement = 20, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [8] = {0.80000001192093, 1.2000000476837, 21, 120, 8000, 100, 3, -2, critChance = 5, levelRequirement = 21, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [9] = {0.80000001192093, 1.2000000476837, 26, 130, 8000, 100, 3, -2, critChance = 5, levelRequirement = 26, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [10] = {0.80000001192093, 1.2000000476837, 30, 140, 8000, 100, 3, -2, critChance = 5, levelRequirement = 30, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [11] = {0.80000001192093, 1.2000000476837, 34, 150, 8000, 100, 3, -2, critChance = 5, levelRequirement = 34, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [12] = {0.80000001192093, 1.2000000476837, 38, 160, 8000, 100, 3, -2, critChance = 5, levelRequirement = 38, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [13] = {0.80000001192093, 1.2000000476837, 43, 170, 8000, 100, 3, -2, critChance = 5, levelRequirement = 43, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [14] = {0.80000001192093, 1.2000000476837, 45, 180, 8000, 100, 3, -2, critChance = 5, levelRequirement = 45, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [15] = {0.80000001192093, 1.2000000476837, 53, 190, 8000, 100, 3, -2, critChance = 5, levelRequirement = 53, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [16] = {0.80000001192093, 1.2000000476837, 58, 200, 8000, 100, 3, -2, critChance = 5, levelRequirement = 58, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [17] = {0.80000001192093, 1.2000000476837, 62, 215, 8000, 100, 3, -2, critChance = 5, levelRequirement = 62, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [18] = {0.80000001192093, 1.2000000476837, 63, 230, 8000, 100, 3, -2, critChance = 5, levelRequirement = 63, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [19] = {0.80000001192093, 1.2000000476837, 66, 245, 8000, 100, 3, -2, critChance = 5, levelRequirement = 66, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [20] = {0.80000001192093, 1.2000000476837, 67, 260, 8000, 100, 3, -2, critChance = 5, levelRequirement = 67, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [21] = {0.80000001192093, 1.2000000476837, 68, 275, 8000, 100, 3, -2, critChance = 5, levelRequirement = 68, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [22] = {0.80000001192093, 1.2000000476837, 69, 290, 8000, 100, 3, -2, critChance = 5, levelRequirement = 69, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [23] = {0.80000001192093, 1.2000000476837, 70, 305, 8000, 100, 3, -2, critChance = 5, levelRequirement = 70, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [24] = {0.80000001192093, 1.2000000476837, 71, 320, 8000, 100, 3, -2, critChance = 5, levelRequirement = 71, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [25] = {0.80000001192093, 1.2000000476837, 72, 335, 8000, 100, 3, -2, critChance = 5, levelRequirement = 72, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [26] = {0.80000001192093, 1.2000000476837, 73, 350, 8000, 100, 3, -2, critChance = 5, levelRequirement = 73, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [27] = {0.80000001192093, 1.2000000476837, 74, 365, 8000, 100, 3, -2, critChance = 5, levelRequirement = 74, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [28] = {0.80000001192093, 1.2000000476837, 75, 380, 8000, 100, 3, -2, critChance = 5, levelRequirement = 75, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [29] = {0.80000001192093, 1.2000000476837, 76, 395, 8000, 100, 3, -2, critChance = 5, levelRequirement = 76, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [30] = {0.80000001192093, 1.2000000476837, 77, 425, 8000, 100, 3, -2, critChance = 5, levelRequirement = 77, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [31] = {0.80000001192093, 1.2000000476837, 78, 455, 8000, 100, 3, -2, critChance = 5, levelRequirement = 78, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [32] = {0.80000001192093, 1.2000000476837, 79, 485, 8000, 100, 3, -2, critChance = 5, levelRequirement = 79, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [33] = {0.80000001192093, 1.2000000476837, 80, 515, 8000, 100, 3, -2, critChance = 5, levelRequirement = 80, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [34] = {0.80000001192093, 1.2000000476837, 81, 545, 8000, 100, 3, -2, critChance = 5, levelRequirement = 81, statInterpolation = {3, 3, 1, 1}, cost = { }, }, [35] = {0.80000001192093, 1.2000000476837, 82, 575, 8000, 100, 3, -2, critChance = 5, levelRequirement = 82, statInterpolation = {3, 3, 1, 1}, cost = { }, }, }, } -- src\Data\Skills\spectre.lua skills["MonsterProximityShield"] = { name = "MonsterProximityShield", hidden = true, color = 4, baseEffectiveness = 0, incrementalEffectiveness = 0, skillTypes = { [SkillType.Spell] = true, [SkillType.Area] = true, [SkillType.Duration] = true, [SkillType.Triggerable] = true, [SkillType.AreaSpell] = true, }, statDescriptionScope = "skill_stat_descriptions", castTime = 1, baseFlags = { area = true, spell = true, duration = true, }, baseMods = { }, qualityStats = { }, stats = { "base_skill_effect_duration", }, levels = { [1] = {8000, levelRequirement = 0, statInterpolation = {}, cost = { }, }, }, } -- src\Data\Skills\spectre.lua skills["ExileTemplarVaalThrownWeapon"] = { name = "Vaal Spectral Throw", hidden = true, color = "2", baseEffectiveness = 0, incrementalEffectiveness = 0, description = "Throws a spectral copy of your melee weapon. It spirals out in a spinning attack that strikes enemies in its path.", skillTypes = { [SkillType.Attack] = true, [SkillType.RangedAttack] = true, [SkillType.Projectile] = true, [SkillType.ProjectilesFromUser] = true, [SkillType.Vaal] = true, }, statDescriptionScope = "skill_stat_descriptions", castTime = 1, baseFlags = { attack = true, projectile = true, }, baseMods = { }, qualityStats = { }, stats = { "projectile_damage_+%", "active_skill_damage_+%_final", "base_projectile_speed_+%", "base_attack_repeat_count", "active_skill_attack_speed_+%_final", "projectiles_nova", "base_is_projectile", "projectiles_not_offset", }, levels = { [1] = {1, -70, 80, 5, 190, baseMultiplier = 0.7, levelRequirement = 1, statInterpolation = {1}, cost = { }, }, [2] = {1, -70, 80, 5, 190, baseMultiplier = 0.718, levelRequirement = 2, statInterpolation = {1}, cost = { }, }, [3] = {2, -70, 80, 5, 190, baseMultiplier = 0.736, levelRequirement = 4, statInterpolation = {1}, cost = { }, }, [4] = {2, -70, 80, 5, 190, baseMultiplier = 0.754, levelRequirement = 7, statInterpolation = {1}, cost = { }, }, [5] = {3, -70, 80, 5, 190, baseMultiplier = 0.772, levelRequirement = 11, statInterpolation = {1}, cost = { }, }, [6] = {4, -70, 80, 5, 190, baseMultiplier = 0.79, levelRequirement = 16, statInterpolation = {1}, cost = { }, }, [7] = {4, -70, 80, 5, 190, baseMultiplier = 0.808, levelRequirement = 20, statInterpolation = {1}, cost = { }, }, [8] = {5, -70, 80, 5, 190, baseMultiplier = 0.826, levelRequirement = 24, statInterpolation = {1}, cost = { }, }, [9] = {5, -70, 80, 5, 190, baseMultiplier = 0.844, levelRequirement = 28, statInterpolation = {1}, cost = { }, }, [10] = {6, -70, 80, 5, 190, baseMultiplier = 0.862, levelRequirement = 32, statInterpolation = {1}, cost = { }, }, [11] = {6, -70, 80, 5, 190, baseMultiplier = 0.88, levelRequirement = 36, statInterpolation = {1}, cost = { }, }, [12] = {7, -70, 80, 5, 190, baseMultiplier = 0.898, levelRequirement = 40, statInterpolation = {1}, cost = { }, }, [13] = {8, -70, 80, 5, 190, baseMultiplier = 0.916, levelRequirement = 44, statInterpolation = {1}, cost = { }, }, [14] = {8, -70, 80, 5, 190, baseMultiplier = 0.934, levelRequirement = 48, statInterpolation = {1}, cost = { }, }, [15] = {9, -70, 80, 5, 190, baseMultiplier = 0.952, levelRequirement = 52, statInterpolation = {1}, cost = { }, }, [16] = {9, -70, 80, 5, 190, baseMultiplier = 0.97, levelRequirement = 56, statInterpolation = {1}, cost = { }, }, [17] = {10, -70, 80, 5, 190, baseMultiplier = 0.988, levelRequirement = 60, statInterpolation = {1}, cost = { }, }, [18] = {11, -70, 80, 5, 190, baseMultiplier = 1.006, levelRequirement = 64, statInterpolation = {1}, cost = { }, }, [19] = {11, -70, 80, 5, 190, baseMultiplier = 1.024, levelRequirement = 67, statInterpolation = {1}, cost = { }, }, [20] = {12, -70, 80, 5, 190, baseMultiplier = 1.042, levelRequirement = 70, statInterpolation = {1}, cost = { }, }, [21] = {12, -70, 80, 5, 190, baseMultiplier = 1.06, levelRequirement = 72, statInterpolation = {1}, cost = { }, }, [22] = {13, -70, 80, 5, 190, baseMultiplier = 1.078, levelRequirement = 74, statInterpolation = {1}, cost = { }, }, [23] = {14, -70, 80, 5, 190, baseMultiplier = 1.096, levelRequirement = 76, statInterpolation = {1}, cost = { }, }, [24] = {14, -70, 80, 5, 190, baseMultiplier = 1.114, levelRequirement = 78, statInterpolation = {1}, cost = { }, }, [25] = {15, -70, 80, 5, 190, baseMultiplier = 1.132, levelRequirement = 80, statInterpolation = {1}, cost = { }, }, [26] = {15, -70, 80, 5, 190, baseMultiplier = 1.15, levelRequirement = 82, statInterpolation = {1}, cost = { }, }, [27] = {16, -70, 80, 5, 190, baseMultiplier = 1.168, levelRequirement = 84, statInterpolation = {1}, cost = { }, }, [28] = {16, -70, 80, 5, 190, baseMultiplier = 1.186, levelRequirement = 86, statInterpolation = {1}, cost = { }, }, [29] = {17, -70, 80, 5, 190, baseMultiplier = 1.204, levelRequirement = 88, statInterpolation = {1}, cost = { }, }, [30] = {18, -70, 80, 5, 190, baseMultiplier = 1.222, levelRequirement = 90, statInterpolation = {1}, cost = { }, }, }, } -- src\Data\Skills\spectre.lua skills["ExileTemplarThrownWeapon"] = { name = "Spectral Throw", hidden = true, color = "2", baseEffectiveness = 0, incrementalEffectiveness = 0, description = "Throws a spectral copy of your melee weapon. It flies out and then returns to you, in a spinning attack that damages enemies in its path.", skillTypes = { [SkillType.Attack] = true, [SkillType.RangedAttack] = true, [SkillType.Projectile] = true, [SkillType.ProjectilesFromUser] = true, }, statDescriptionScope = "skill_stat_descriptions", castTime = 1, baseFlags = { attack = true, projectile = true, }, baseMods = { }, qualityStats = { }, stats = { "active_skill_damage_+%_final", "number_of_additional_projectiles", "base_projectile_speed_+%", "spell_maximum_action_distance_+%", "attack_speed_+%", "base_is_projectile", }, levels = { [1] = {-30, 2, 30, -30, 50, levelRequirement = 1, statInterpolation = {}, cost = { }, }, }, }
+1 к максимальному количеству установленных тотемов
Id | MonsterAdditionalTotem |
---|---|
Family | AdditionalTotems |
Domains | монстр (3) |
GenerationType | Уникальный (3) |
Req. level | 1 |
Stats |
kill traps mines and totems on death [1]
Id | MonsterKillTrapsMinesTotemsOnDeath |
---|---|
Family | MonsterKillTrapsMinesTotemsOnDeath |
Domains | монстр (3) |
GenerationType | Уникальный (3) |
Req. level | 1 |
Stats |
kill traps mines and totems on death [1]
Id | MonsterKillTrapsMinesTotemsOnDeath |
---|---|
Family | MonsterKillTrapsMinesTotemsOnDeath |
Domains | монстр (3) |
GenerationType | Уникальный (3) |
Req. level | 1 |
Stats |
% увеличение редкости выпадающих предметов
Id | MonsterSideAreaBoss |
---|---|
Family | MonsterSideAreaBoss |
Domains | монстр (3) |
GenerationType | Уникальный (3) |
Req. level | 1 |
Stats |
monster no map drops [1]
Id | MonsterNoMapDrops |
---|---|
Family | MonsterNoMapDrops |
Domains | монстр (3) |
GenerationType | Уникальный (3) |
Req. level | 1 |
Stats |
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]
Id | MonsterInvasionMercilessDrops1 |
---|---|
Family | MonsterMercilessDrops |
Domains | монстр (3) |
GenerationType | Уникальный (3) |
Req. level | 1 |
Stats |
Edit
Wikis Content is available under CC BY-NC-SA 3.0 unless otherwise noted.
Wikis Content is available under CC BY-NC-SA 3.0 unless otherwise noted.