悔悟せぬ者、コンレイ
人型
モンスターの付与する経験値が100%増加する
ドロップするアイテムのレアリティが15000%増加する
エナジーシールドリチャージレートが65%減少する
cannot be stunned for ms after stun finished [2000]
cannot be stunned while stunned [1]
ノックバックを受けることがない
Konley, the Unrepentant
SpectreN
Area聖堂のマップ
Tagsbludgeoning_weapon, キャスター, fire_affinity, has_staff, has_two_handed_melee, humanoid, large_height, large_model, medium_movement, melee, non_unique_map_boss, not_dex, physical_affinity, plate_armour, ranged
ライフ
340%
Energy Shield From Life
100%
アーマー
+100%
Ailment Threshold
340%
耐性
40 40 40 25
Damage
180%
命中
100%
クリティカル率
+5%
クリティカルダメージ倍率
+130%
Attack Distance
6 ~ 12
Attack Time
1.995 Second
Damage Spread
±20%
経験値
200%
Model Size
100%
Type
AvariusCasticusMap
Metadata
AvariusCasticusMap
レベル
76
ライフ
1,945,758
アーマー
107,792
回避力
6,235
エナジーシールド
10,030
Damage
1,232
スペルダメージ
1,838
命中
396
Attack Time
1.33665
経験値
132,044
Ailment Threshold
992,336
Chill
3,138
Shock
3,138
Brittle
17,752
Scorch
3,138
Sap
8,669
Melee
Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Multistrikeable, Melee, ProjectilesFromUser
通常攻撃
Base Damage: 1956–2934
クリティカル率: 5%
Attack Time: 1.995 秒
強力な一撃で敵を打ち倒す。
skill can fire arrows [1]
skill can fire wand projectiles [1]
AvariusCleave
Attack, Area, Multistrikeable, Melee
Base Damage: 1956–2934
クリティカル率: 5%
Attack Time: 1.995 秒
クールダウン時間: 6 秒
is area damage [1]
AvariusRapidProjectileMap
Attack, RangedAttack, Projectile, ProjectileSpeed, ProjectilesNotFromUser
Base Damage: 1956–2934
クリティカル率: 5%
Attack Time: 1.995 秒
クールダウン時間: 12 秒
投射物は全ての対象を貫通する
1483から2225の火ダメージを与える
base is projectile [1]
projectile uses contact position [1]
total projectile spread angle override [15]
AvariusFireball
Projectile, ProjectilesFromUser, Spell, Damage, Area, Trappable, Totemable, Mineable, Multicastable, Triggerable, Fire, CanRapidFire, AreaSpell
ファイヤーボール
クリティカル率: 6%
キャストタイム: 1.2 秒
爆発し周囲の敵にダメージを与える火の玉を対象に向けて放つ。
1009から1513の火ダメージを与える
基礎半径は0.9m
base is projectile [1]
number of projectiles override [1]
projectile uses contact position [1]
AvariusDivineSlam
Attack, Area, Multistrikeable, Melee
Base Damage: 1956–2934
クリティカル率: 5%
Attack Time: 1.995 秒
クールダウン時間: 20 秒
アタックスピードが15%低下する
衝撃波の与えるダメージが50%上昇する
is area damage [1]
monster penalty against minions damage +% final vs player minions [-50]
AvariusRaiseStatues
Spell
キャストタイム: 1.5 秒
クールダウン時間: 20 秒
gain consume charges on skill use [1]
spell maximum action distance +% [100]
AvariusSuperProjectileMap
Attack, RangedAttack, Projectile, ProjectileSpeed, ProjectilesNotFromUser
Base Damage: 1956–2934
クリティカル率: 5%
Attack Time: 1.995 秒
クールダウン時間: 15 秒
投射物は全ての対象を貫通する
3716から4247の火ダメージを与える
base is projectile [1]
monster penalty against minions damage +% final vs player minions [-70]
spell maximum action distance +% [1000]
thrown shield num additional projectiles [12]
AvariusCharge
Attack, Movement, Area, Damage, Projectile, ProjectilesNotFromUser
Base Damage: 1956–2934
クリティカル率: 5%
Attack Time: 1.995 秒
クールダウン時間: 6 秒
基礎持続時間は0.3
アタックスピードが400%上昇する
AvariusOffsetProjectileForward
Attack, RangedAttack, Projectile, ProjectileSpeed, ProjectilesNotFromUser
Base Damage: 1956–2934
クリティカル率: 5%
Attack Time: 1.995 秒
1009から1513の火ダメージを与える
base is projectile [1]
number of projectiles override [1]
projectile uses contact position [1]
AvariusOffsetProjectileRight
Attack, RangedAttack, Projectile, ProjectileSpeed, ProjectilesNotFromUser
Base Damage: 1956–2934
クリティカル率: 5%
Attack Time: 1.995 秒
1009から1513の火ダメージを与える
base is projectile [1]
number of projectiles override [1]
projectile uses contact position [1]
AvariusSummonTemplarsMap
Spell
キャストタイム: 1 秒
基礎持続時間は4
expend consume charges on skill use [1]
AvariusKillStatues
Spell
キャストタイム: 1 秒
AvariusCharge2
Attack, Movement, Area, Damage, Projectile, ProjectilesNotFromUser
Base Damage: 1956–2934
クリティカル率: 5%
Attack Time: 1.995 秒
クールダウン時間: 3 秒
基礎持続時間は0.3
アタックスピードが400%上昇する

Object Type

version 2
extends "Metadata/Monsters/Monster"

Actor
{
	slow_animations_go_to_idle = false
}

Stats
{
	set_item_drop_slots = 0
	set_monster_no_drops = 1
	set_monster_has_second_form = 1
	set_monster_can_spawn_with_talisman = 1
	set_maximum_consume_charges = 1
}

Life
{
	corpse_usable = false
}

Transitionable
{
	num_states = 3
}

StateMachine
{
	
}

Object Type Codes

version 2
extends "Metadata/Monsters/Monster"

Render
{
	has_light = true
	//turn_duration = 0.5
}

Animated
{
	preload_animated_object = "Metadata/Effects/Spells/monsters_effects/act5/Avarius_Casticus/p2_golden_templar/minion_death/miniondeath.ao"
	preload_animated_object = "Metadata/Effects/Spells/monsters_effects/act5/Avarius_Casticus/p2_golden_templar/summon_in/summon_in.ao"
}
-- src\Data\Spectres.lua
minions["Metadata/Monsters/AvariusCasticus/AvariusCasticusMap"] = {
    name = "Konley, the Unrepentant",
    life = 3.4,
    energyShield = 1,
    fireResist = 40,
    coldResist = 40,
    lightningResist = 40,
    chaosResist = 25,
    damage = 1.8,
    damageSpread = 0.2,
    attackTime = 1.995,
    attackRange = 12,
    accuracy = 1,
    weaponType1 = "Staff",
    skillList = {
        "AvariusFireball",
        "Melee",
        "AvariusCleave",
        "AvariusOffsetProjectileForward",
        "AvariusOffsetProjectileRight",
        "AvariusSuperProjectileMap",
        "AvariusRapidProjectileMap",
        "AvariusDivineSlam",
        "AvariusSummonTemplarsMap",
        "AvariusRaiseStatues",
        "AvariusCharge",
        "AvariusCharge2",
        "AvariusKillStatues",
    },
    modList = {
    },
}
-- src\Data\Skills\spectre.lua
skills["AvariusFireball"] = {
    name = "Fireball",
    hidden = true,
    color = "3",
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    description = "Unleashes a ball of fire towards a target which explodes, damaging nearby foes.",
    skillTypes = {
        [SkillType.Projectile] = true,
        [SkillType.ProjectilesFromUser] = true,
        [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.Fire] = true,
        [SkillType.CanRapidFire] = true,
        [SkillType.AreaSpell] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1.2,
    baseFlags = {
        area = true,
        spell = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "spell_minimum_base_fire_damage",
        "spell_maximum_base_fire_damage",
        "number_of_projectiles_override",
        "active_skill_base_area_of_effect_radius",
        "base_is_projectile",
        "projectile_uses_contact_position",
    },
    levels = {
        [1] = {0.80000001192093, 1.2000000476837, 1, 9, critChance = 6, levelRequirement = 50, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- 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["AvariusCleave"] = {
    name = "AvariusCleave",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Attack] = true,
        [SkillType.Area] = true,
        [SkillType.Multistrikeable] = true,
        [SkillType.Melee] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 3.5,
    baseFlags = {
        attack = true,
        area = true,
        melee = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "is_area_damage",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["AvariusOffsetProjectileForward"] = {
    name = "AvariusOffsetProjectileForward",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Attack] = true,
        [SkillType.RangedAttack] = true,
        [SkillType.Projectile] = true,
        [SkillType.ProjectileSpeed] = true,
        [SkillType.ProjectilesNotFromUser] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1.2,
    baseFlags = {
        attack = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "spell_minimum_base_fire_damage",
        "spell_maximum_base_fire_damage",
        "number_of_projectiles_override",
        "base_is_projectile",
        "projectile_uses_contact_position",
    },
    levels = {
        [1] = {0.80000001192093, 1.2000000476837, 1, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["AvariusOffsetProjectileRight"] = {
    name = "AvariusOffsetProjectileRight",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Attack] = true,
        [SkillType.RangedAttack] = true,
        [SkillType.Projectile] = true,
        [SkillType.ProjectileSpeed] = true,
        [SkillType.ProjectilesNotFromUser] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1.2,
    baseFlags = {
        attack = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "spell_minimum_base_fire_damage",
        "spell_maximum_base_fire_damage",
        "number_of_projectiles_override",
        "base_is_projectile",
        "projectile_uses_contact_position",
    },
    levels = {
        [1] = {0.80000001192093, 1.2000000476837, 1, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["AvariusSuperProjectileMap"] = {
    name = "AvariusSuperProjectileMap",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Attack] = true,
        [SkillType.RangedAttack] = true,
        [SkillType.Projectile] = true,
        [SkillType.ProjectileSpeed] = true,
        [SkillType.ProjectilesNotFromUser] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 5,
    baseFlags = {
        attack = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "spell_minimum_base_fire_damage",
        "spell_maximum_base_fire_damage",
        "thrown_shield_num_additional_projectiles",
        "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
        "spell_maximum_action_distance_+%",
        "base_is_projectile",
        "always_pierce",
    },
    levels = {
        [1] = {1.3999999761581, 1.6000000238419, 12, -70, 1000, levelRequirement = 43, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["AvariusRapidProjectileMap"] = {
    name = "AvariusRapidProjectileMap",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Attack] = true,
        [SkillType.RangedAttack] = true,
        [SkillType.Projectile] = true,
        [SkillType.ProjectileSpeed] = true,
        [SkillType.ProjectilesNotFromUser] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 3,
    baseFlags = {
        attack = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "spell_minimum_base_fire_damage",
        "spell_maximum_base_fire_damage",
        "total_projectile_spread_angle_override",
        "always_pierce",
        "base_is_projectile",
        "projectile_uses_contact_position",
    },
    levels = {
        [1] = {0.80000001192093, 1.2000000476837, 15, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["AvariusDivineSlam"] = {
    name = "AvariusDivineSlam",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Attack] = true,
        [SkillType.Area] = true,
        [SkillType.Multistrikeable] = true,
        [SkillType.Melee] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 2.25,
    baseFlags = {
        attack = true,
        area = true,
        melee = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "shockwave_slam_explosion_damage_+%_final",
        "active_skill_attack_speed_+%_final",
        "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
        "is_area_damage",
    },
    levels = {
        [1] = {50, -15, -50, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["AvariusSummonTemplarsMap"] = {
    name = "AvariusSummonTemplarsMap",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        spell = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "base_skill_effect_duration",
        "expend_consume_charges_on_skill_use",
    },
    levels = {
        [1] = {4000, 1, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["AvariusRaiseStatues"] = {
    name = "AvariusRaiseStatues",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1.5,
    baseFlags = {
        spell = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "gain_consume_charges_on_skill_use",
        "spell_maximum_action_distance_+%",
    },
    levels = {
        [1] = {1, 100, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["AvariusCharge"] = {
    name = "AvariusCharge",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Attack] = true,
        [SkillType.Movement] = true,
        [SkillType.Area] = true,
        [SkillType.Damage] = true,
        [SkillType.Projectile] = true,
        [SkillType.ProjectilesNotFromUser] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 0.2,
    baseFlags = {
        attack = true,
        area = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "base_skill_effect_duration",
        "active_skill_attack_speed_+%_final",
    },
    levels = {
        [1] = {300, 400, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["AvariusCharge2"] = {
    name = "AvariusCharge2",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Attack] = true,
        [SkillType.Movement] = true,
        [SkillType.Area] = true,
        [SkillType.Damage] = true,
        [SkillType.Projectile] = true,
        [SkillType.ProjectilesNotFromUser] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 0.2,
    baseFlags = {
        attack = true,
        area = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "base_skill_effect_duration",
        "active_skill_attack_speed_+%_final",
    },
    levels = {
        [1] = {300, 400, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["AvariusKillStatues"] = {
    name = "AvariusKillStatues",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        spell = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
モンスターの付与する経験値が100%増加する
ドロップするアイテムのレアリティが15000%増加する
IdMonsterMapBoss
FamilyMonsterMapBoss
Domainsモンスター (3)
GenerationTypeユニーク (3)
Req. level1
Stats
  • monster slain experience +% Min: 100 Max: 100 Global
  • monster dropped item rarity +% Min: 15000 Max: 15000 Global
  • エナジーシールドリチャージレートが65%減少する
    IdMonsterEnergyShieldRegenRate-65
    FamilyEnergyShieldRegeneration
    Domainsモンスター (3)
    GenerationTypeユニーク (3)
    Req. level1
    Stats
  • energy shield recharge rate +% Min: -65 Max: -65 Global
  • Craft Tagsdefences energy_shield
    cannot be stunned for ms after stun finished [2000]
    cannot be stunned while stunned [1]
    IdStunRepeatImmunityMapBoss_
    FamilyNothing
    Domainsモンスター (3)
    GenerationTypeユニーク (3)
    Req. level1
    Stats
  • cannot be stunned while stunned Min: 1 Max: 1 Global
  • cannot be stunned for ms after stun finished Min: 2000 Max: 2000 Global
  • ノックバックを受けることがない
    IdImmuneToKnockback
    FamilyImmuneToKnockback
    Domainsモンスター (3)
    GenerationTypeユニーク (3)
    Req. level1
    Stats
  • cannot be knocked back Min: 1 Max: 1 Global
  • 悔悟せぬ者、コンレイ
    人型
    モンスターの付与する経験値が100%増加する
    ドロップするアイテムのレアリティが15000%増加する
    エナジーシールドリチャージレートが65%減少する
    cannot be stunned for ms after stun finished [2000]
    cannot be stunned while stunned [1]
    ノックバックを受けることがない
    Konley, the Unrepentant
    SpectreN
    Tagsbludgeoning_weapon, elder_map_boss, has_staff, has_two_handed_melee, humanoid, large_height, large_model, medium_movement, non_attacking, not_dex, plate_armour
    ライフ
    340%
    Energy Shield From Life
    100%
    アーマー
    +100%
    Ailment Threshold
    340%
    耐性
    40 40 40 25
    Damage
    180%
    命中
    100%
    クリティカル率
    +5%
    クリティカルダメージ倍率
    +130%
    Attack Distance
    6 ~ 12
    Attack Time
    1.995 Second
    Damage Spread
    ±20%
    経験値
    200%
    Model Size
    100%
    Type
    AvariusCasticusMap
    Metadata
    AvariusCasticusMapElder

    Object Type

    version 2
    extends "Metadata/Monsters/ElderBosses/ElderBossClone"

    Object Type Codes

    version 2
    extends "Metadata/Monsters/ElderBosses/ElderBossClone"
    
    Render
    {
    	has_light = true
    }
    -- src\Data\Spectres.lua
    minions["Metadata/Monsters/AvariusCasticus/AvariusCasticusMapElder"] = {
        name = "Konley, the Unrepentant",
        life = 3.4,
        energyShield = 1,
        fireResist = 40,
        coldResist = 40,
        lightningResist = 40,
        chaosResist = 25,
        damage = 1.8,
        damageSpread = 0.2,
        attackTime = 1.995,
        attackRange = 12,
        accuracy = 1,
        weaponType1 = "Staff",
        skillList = {
        },
        modList = {
        },
    }
    
    モンスターの付与する経験値が100%増加する
    ドロップするアイテムのレアリティが15000%増加する
    IdMonsterMapBoss
    FamilyMonsterMapBoss
    Domainsモンスター (3)
    GenerationTypeユニーク (3)
    Req. level1
    Stats
  • monster slain experience +% Min: 100 Max: 100 Global
  • monster dropped item rarity +% Min: 15000 Max: 15000 Global
  • エナジーシールドリチャージレートが65%減少する
    IdMonsterEnergyShieldRegenRate-65
    FamilyEnergyShieldRegeneration
    Domainsモンスター (3)
    GenerationTypeユニーク (3)
    Req. level1
    Stats
  • energy shield recharge rate +% Min: -65 Max: -65 Global
  • Craft Tagsdefences energy_shield
    cannot be stunned for ms after stun finished [2000]
    cannot be stunned while stunned [1]
    IdStunRepeatImmunityMapBoss_
    FamilyNothing
    Domainsモンスター (3)
    GenerationTypeユニーク (3)
    Req. level1
    Stats
  • cannot be stunned while stunned Min: 1 Max: 1 Global
  • cannot be stunned for ms after stun finished Min: 2000 Max: 2000 Global
  • ノックバックを受けることがない
    IdImmuneToKnockback
    FamilyImmuneToKnockback
    Domainsモンスター (3)
    GenerationTypeユニーク (3)
    Req. level1
    Stats
  • cannot be knocked back Min: 1 Max: 1 Global
  • Edit

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