MirageVillageShippingSanctumArchnemesisExpeditionDetonatorUltimatumAltarRitualRuneHeistSumgglersCacheHarvestPortalAfflictionInitiatorBlightCoreLegionInitiatorBetrayalSymbolCatarinaDelveMineralVeinIncursionCraftingBenchBestiaryRareMonsterAbyssBreachEssenceStrongboxShrine
Rampant noyé
Mort-vivant
IconEnemyResistanceFire IconEnemyResistanceCold IconEnemyResistanceLightning
stance movement speed +% final [610]
Drowned Crawler
Spectre
Spectre OverrideMetadata/Monsters/DeepwaterLeague/DrownedCrawlerSpectre
AreaFonds sableux, Forêt corallienne, Récif corallien
Tagshumanoid, is_unarmed, melee, not_int, red_blood, undead, very_slow_movement
Packs
  • Fonds sableux, Récif corallien, Forêt corallienne: Rampant noyé
  • Vie
    120%
    Armure
    +20%
    Évasion
    +40%
    Ailment Threshold
    120%
    Résistance
    IconEnemyResistanceFire20% IconEnemyResistanceCold20% IconEnemyResistanceLightning20% IconEnemyResistanceChaos0%
    Damage
    120%
    Précision
    100%
    Chances de coup critique
    +5%
    Multiplicateur de coups critiques
    +130%
    Attack Distance
    6 ~ 9
    Attack Time
    1.5 Second
    Damage Spread
    ±20%
    Expérience
    120%
    Model Size
    100%
    Type
    DeepwaterDrownedCrawler
    Metadata
    DrownedCrawler
    Niveau
    68
    Vie
    7,720
    Armure
    34,548
    Score d'Évasion
    6,635
    Damage
    448
    Dégâts des sorts
    448
    Précision
    580
    Attack Time
    1.5
    Expérience
    12,306
    Minion Life
    1,675
    Minion Damage
    358
    Ailment Threshold
    7,720
    Chill
    24
    Shock
    24
    Brittle
    138
    Scorch
    24
    Sap
    67
    Phys Convert Ele
    240%
    MeleeAtAnimationSpeed
    Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Multistrikeable, Melee, ProjectilesFromUser
    Attaque par défaut
    Base Damage: 359538
    Chances de coup critique: 5%
    Attack Time: 1.5 sec.
    Frappez vos ennemis d'un coup puissant.
    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]
    iconbasicattack
    EASDeepwaterCrawlerBuff
    Spell
    Temps d'incantation: 1 sec.
    Temps de recharge: 10 sec.
    action attack or cast time uses animation length [1]
    DTTDeepwaterCrawlerLeap
    Spell, Movement
    Temps d'incantation: 1 sec.
    Temps de recharge: 8 sec.
    action attack or cast time uses animation length [1]
    leap slam minimum distance [40]
    spell maximum action distance +% [-50]
    walk emerge extra distance [-5]
    GADeepwaterCrawlerLeapSwipe
    Triggerable, Attack
    Base Damage: 359538
    Chances de coup critique: 5%
    Dégâts d'Attaque: 115%
    Dégâts d'Attaque: 115%
    Attack Time: 1.5 sec.
    15% Davantage de Dégâts d'Attaque
    is area damage [1]
    DoLiterallyNothing

    Object Type

     
    -- src\Data\Spectres.lua
    minions["Metadata/Monsters/DeepwaterLeague/DrownedCrawler"] = {
        fireResist = 20,
        coldResist = 20,
        lightningResist = 20,
        chaosResist = 0,
        name = "Drowned Crawler",
        life = 1.2,
        damage = 1.2,
        damageSpread = 0.2,
        attackTime = 1.5,
        attackRange = 9,
        accuracy = 1,
        skillList = {
            "MeleeAtAnimationSpeed",
            "GADeepwaterCrawlerLeapSwipe",
            "EASDeepwaterCrawlerBuff",
            "DTTDeepwaterCrawlerLeap",
            "DoLiterallyNothing",
        },
        modList = {
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MeleeAtAnimationSpeed"] = {
        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["GADeepwaterCrawlerLeapSwipe"] = {
        name = "GADeepwaterCrawlerLeapSwipe",
        hidden = true,
        color = "4",
        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",
        },
        levels = {
            [1] = {baseMultiplier = 1.15, levelRequirement = 0, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["EASDeepwaterCrawlerBuff"] = {
        name = "EASDeepwaterCrawlerBuff",
        hidden = true,
        color = "4",
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Spell] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            spell = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {levelRequirement = 0, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["DTTDeepwaterCrawlerLeap"] = {
        name = "DTTDeepwaterCrawlerLeap",
        hidden = true,
        color = "4",
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Spell] = true,
            [SkillType.Movement] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            spell = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "leap_slam_minimum_distance",
            "spell_maximum_action_distance_+%",
            "walk_emerge_extra_distance",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {40, -50, -5, levelRequirement = 0, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["DoLiterallyNothing"] = {
        name = "DoLiterallyNothing",
        hidden = true,
        color = "4",
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
        },
        levels = {
            [1] = {levelRequirement = 0, statInterpolation = {},  cost = { }, },
        },
    }
    
    stance movement speed +% final [610]
    FamilyStance
    Domainsmonstre (3)
    GenerationTypeUnique (3)
    Req. level1
    Stats
  • stance movement speed +% final 610 610 Global
  • Craft TagsVitesse
    FamilyNothing
    Domainsmonstre (3)
    GenerationTypeUnique (3)
    Req. level1
    Rampant noyé
    Mort-vivant
    IconEnemyResistanceFire IconEnemyResistanceCold IconEnemyResistanceLightning
    stance movement speed +% final [610]
    Drowned Crawler
    Spectre
    Tagshumanoid, is_unarmed, melee, not_int, red_blood, undead, very_slow_movement
    Vie
    120%
    Armure
    +20%
    Évasion
    +40%
    Ailment Threshold
    120%
    Résistance
    IconEnemyResistanceFire20% IconEnemyResistanceCold20% IconEnemyResistanceLightning20% IconEnemyResistanceChaos0%
    Damage
    120%
    Précision
    100%
    Chances de coup critique
    +5%
    Multiplicateur de coups critiques
    +130%
    Attack Distance
    6 ~ 9
    Attack Time
    1.5 Second
    Damage Spread
    ±20%
    Expérience
    120%
    Model Size
    100%
    Type
    DeepwaterDrownedCrawler
    Metadata
    DrownedCrawlerSpectre
    Niveau
    68
    Vie
    7,720
    Armure
    34,548
    Score d'Évasion
    6,635
    Damage
    448
    Dégâts des sorts
    448
    Précision
    580
    Attack Time
    1.5
    Expérience
    12,306
    Minion Life
    1,675
    Minion Damage
    358
    Ailment Threshold
    7,720
    Chill
    24
    Shock
    24
    Brittle
    138
    Scorch
    24
    Sap
    67
    Phys Convert Ele
    240%
    MeleeAtAnimationSpeed
    Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Multistrikeable, Melee, ProjectilesFromUser
    Attaque par défaut
    Base Damage: 359538
    Chances de coup critique: 5%
    Attack Time: 1.5 sec.
    Frappez vos ennemis d'un coup puissant.
    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]
    iconbasicattack
    EASDeepwaterCrawlerBuff
    Spell
    Temps d'incantation: 1 sec.
    Temps de recharge: 10 sec.
    action attack or cast time uses animation length [1]
    DTTDeepwaterCrawlerLeap
    Spell, Movement
    Temps d'incantation: 1 sec.
    Temps de recharge: 8 sec.
    action attack or cast time uses animation length [1]
    leap slam minimum distance [40]
    spell maximum action distance +% [-50]
    walk emerge extra distance [-5]
    GADeepwaterCrawlerLeapSwipe
    Triggerable, Attack
    Base Damage: 359538
    Chances de coup critique: 5%
    Dégâts d'Attaque: 115%
    Dégâts d'Attaque: 115%
    Attack Time: 1.5 sec.
    15% Davantage de Dégâts d'Attaque
    is area damage [1]
    DoLiterallyNothing

    Object Type

     
    -- src\Data\Spectres.lua
    minions["Metadata/Monsters/DeepwaterLeague/DrownedCrawlerSpectre"] = {
        fireResist = 20,
        coldResist = 20,
        lightningResist = 20,
        chaosResist = 0,
        name = "Drowned Crawler",
        life = 1.2,
        damage = 1.2,
        damageSpread = 0.2,
        attackTime = 1.5,
        attackRange = 9,
        accuracy = 1,
        skillList = {
            "MeleeAtAnimationSpeed",
            "GADeepwaterCrawlerLeapSwipe",
            "EASDeepwaterCrawlerBuff",
            "DTTDeepwaterCrawlerLeap",
            "DoLiterallyNothing",
        },
        modList = {
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MeleeAtAnimationSpeed"] = {
        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["GADeepwaterCrawlerLeapSwipe"] = {
        name = "GADeepwaterCrawlerLeapSwipe",
        hidden = true,
        color = "4",
        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",
        },
        levels = {
            [1] = {baseMultiplier = 1.15, levelRequirement = 0, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["EASDeepwaterCrawlerBuff"] = {
        name = "EASDeepwaterCrawlerBuff",
        hidden = true,
        color = "4",
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Spell] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            spell = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {levelRequirement = 0, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["DTTDeepwaterCrawlerLeap"] = {
        name = "DTTDeepwaterCrawlerLeap",
        hidden = true,
        color = "4",
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Spell] = true,
            [SkillType.Movement] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            spell = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "leap_slam_minimum_distance",
            "spell_maximum_action_distance_+%",
            "walk_emerge_extra_distance",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {40, -50, -5, levelRequirement = 0, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["DoLiterallyNothing"] = {
        name = "DoLiterallyNothing",
        hidden = true,
        color = "4",
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
        },
        levels = {
            [1] = {levelRequirement = 0, statInterpolation = {},  cost = { }, },
        },
    }
    
    stance movement speed +% final [610]
    FamilyStance
    Domainsmonstre (3)
    GenerationTypeUnique (3)
    Req. level1
    Stats
  • stance movement speed +% final 610 610 Global
  • Craft TagsVitesse
    FamilyNothing
    Domainsmonstre (3)
    GenerationTypeUnique (3)
    Req. level1
    Rampant noyé
    Mort-vivant
    IconEnemyResistanceFire IconEnemyResistanceCold IconEnemyResistanceLightning
    stance movement speed +% final [610]
    Drowned Crawler
    Spectre
    Tagshumanoid, is_unarmed, melee, not_int, red_blood, undead, very_slow_movement
    Vie
    120%
    Armure
    +20%
    Évasion
    +40%
    Ailment Threshold
    120%
    Résistance
    IconEnemyResistanceFire20% IconEnemyResistanceCold20% IconEnemyResistanceLightning20% IconEnemyResistanceChaos0%
    Damage
    120%
    Précision
    100%
    Chances de coup critique
    +5%
    Multiplicateur de coups critiques
    +130%
    Attack Distance
    6 ~ 9
    Attack Time
    1.5 Second
    Damage Spread
    ±20%
    Expérience
    120%
    Model Size
    100%
    Type
    DeepwaterDrownedCrawler
    Metadata
    DrownedCrawlerEncounter
    Niveau
    68
    Vie
    7,720
    Armure
    34,548
    Score d'Évasion
    6,635
    Damage
    448
    Dégâts des sorts
    448
    Précision
    580
    Attack Time
    1.5
    Expérience
    12,306
    Minion Life
    1,675
    Minion Damage
    358
    Ailment Threshold
    7,720
    Chill
    24
    Shock
    24
    Brittle
    138
    Scorch
    24
    Sap
    67
    Phys Convert Ele
    240%
    MeleeAtAnimationSpeed
    Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Multistrikeable, Melee, ProjectilesFromUser
    Attaque par défaut
    Base Damage: 359538
    Chances de coup critique: 5%
    Attack Time: 1.5 sec.
    Frappez vos ennemis d'un coup puissant.
    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]
    iconbasicattack
    EASDeepwaterCrawlerBuff
    Spell
    Temps d'incantation: 1 sec.
    Temps de recharge: 10 sec.
    action attack or cast time uses animation length [1]
    DTTDeepwaterCrawlerLeap
    Spell, Movement
    Temps d'incantation: 1 sec.
    Temps de recharge: 8 sec.
    action attack or cast time uses animation length [1]
    leap slam minimum distance [40]
    spell maximum action distance +% [-50]
    walk emerge extra distance [-5]
    GADeepwaterCrawlerLeapSwipe
    Triggerable, Attack
    Base Damage: 359538
    Chances de coup critique: 5%
    Dégâts d'Attaque: 115%
    Dégâts d'Attaque: 115%
    Attack Time: 1.5 sec.
    15% Davantage de Dégâts d'Attaque
    is area damage [1]
    DoLiterallyNothing

    Object Type

     
    -- src\Data\Spectres.lua
    minions["Metadata/Monsters/DeepwaterLeague/DrownedCrawlerEncounter"] = {
        fireResist = 20,
        coldResist = 20,
        lightningResist = 20,
        chaosResist = 0,
        name = "Drowned Crawler",
        life = 1.2,
        damage = 1.2,
        damageSpread = 0.2,
        attackTime = 1.5,
        attackRange = 9,
        accuracy = 1,
        skillList = {
            "MeleeAtAnimationSpeed",
            "GADeepwaterCrawlerLeapSwipe",
            "EASDeepwaterCrawlerBuff",
            "DTTDeepwaterCrawlerLeap",
            "DoLiterallyNothing",
        },
        modList = {
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MeleeAtAnimationSpeed"] = {
        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["GADeepwaterCrawlerLeapSwipe"] = {
        name = "GADeepwaterCrawlerLeapSwipe",
        hidden = true,
        color = "4",
        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",
        },
        levels = {
            [1] = {baseMultiplier = 1.15, levelRequirement = 0, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["EASDeepwaterCrawlerBuff"] = {
        name = "EASDeepwaterCrawlerBuff",
        hidden = true,
        color = "4",
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Spell] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            spell = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {levelRequirement = 0, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["DTTDeepwaterCrawlerLeap"] = {
        name = "DTTDeepwaterCrawlerLeap",
        hidden = true,
        color = "4",
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Spell] = true,
            [SkillType.Movement] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            spell = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "leap_slam_minimum_distance",
            "spell_maximum_action_distance_+%",
            "walk_emerge_extra_distance",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {40, -50, -5, levelRequirement = 0, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["DoLiterallyNothing"] = {
        name = "DoLiterallyNothing",
        hidden = true,
        color = "4",
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
        },
        levels = {
            [1] = {levelRequirement = 0, statInterpolation = {},  cost = { }, },
        },
    }
    
    stance movement speed +% final [610]
    FamilyStance
    Domainsmonstre (3)
    GenerationTypeUnique (3)
    Req. level1
    Stats
  • stance movement speed +% final 610 610 Global
  • Craft TagsVitesse
    FamilyNothing
    Domainsmonstre (3)
    GenerationTypeUnique (3)
    Req. level1
    Edit

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