权利猎人德里克
人形
区域: 无边原野
怪物提供的经验值提高 100%
monster dropped item rarity +% [15000]
20% 攻击伤害格挡率
被格挡的击中对你造成 10% 伤害
cannot be stunned for ms after stun finished [2000]
cannot be stunned while stunned [1]
Drek, Apex Hunter
幽魂N
地区无边原野
标签flesh_armour, has_one_handed_melee, has_thrusting_one_hand_sword, human, humanoid, medium_movement, medium_small_height, melee, non_unique_map_boss, not_int, physical_affinity, puncturing_weapon, ranged, red_blood
生命
400%
护甲
+50%
闪避值
+25%
异常状态临界值
400%
抗性
40 40 40 25
伤害
200%
命中
100%
攻击暴击率
+5%
暴击伤害
+130%
攻击距离
6 ~ 12
攻击间隔
1.455 秒
伤害分布
±20%
经验值
200%
Model Size
100%
类型
RalakeshGreustMap
Metadata
GreustMap
等级
69
生命
649,329
护甲
46,737
闪避值
6,134
能量护盾
0
伤害
904
法术伤害
1,349
命中
301
攻击间隔
0.97485
经验值
115,357
异常状态临界值
383,104
冰缓
1,211
Shock
1,211
Brittle
6,853
Scorch
1,211
Sap
3,347
Melee
攻击, 范围攻击, 技能可幻影射手, 投射物, 近战单一目标, 攻击可重复, 近战, 玩家投射物
普通攻击
基本伤害: 1435–2153
攻击暴击率: 5%
攻击间隔: 1.455 秒
对你的敌人无情痛击。
skill can fire arrows [1]
skill can fire wand projectiles [1]
GreustCharge
攻击
基本伤害: 1435–2153
攻击暴击率: 5%
攻击间隔: 1.455 秒
冷却时间: 6 秒
攻击速度总降 35%
击中时造成瘫痪
active skill area of effect radius +% final [-75]
is area damage [1]
GreustSpearThrowMap
攻击, 范围攻击, 技能可幻影射手, 投射物, 玩家投射物, 伤害, 可触发
基本伤害: 1435–2153
攻击暴击率: 5%
攻击伤害: 90%
攻击间隔: 1.455 秒
攻击伤害总降 10%
投射物速度加快 50%
导致流血
base is projectile [1]
monster projectile variation [18]
GreustTaunt
冷却时间: 20 秒
RalakeshBlessing
冷却时间: 15 秒
基础持续时间为 5
受到的伤害降低 75%
GreustSpearBarrage
攻击, 投射物, 伤害, 范围攻击, 玩家投射物
基本伤害: 1435–2153
攻击暴击率: 5%
攻击伤害: 98%
攻击间隔: 1.455 秒
冷却时间: 9 秒
你的击中不能眩晕敌人
攻击伤害总降 2%
攻击速度总降 73%
近战打击范围 +5
base is projectile [1]
ground slam cone angle override [5]
monster penalty against minions damage +% final vs player minions [-75]
monster reverse point blank damage -% at minimum range [33]
projectile speed variation +% [10]

Object Type

version 2
extends "Metadata/Monsters/Monster"

Actor
{
	basic_action = "ChangeToStance1"
	slow_animations_go_to_idle = false
}

Transitionable
{
	on_transition = "MakeCollidable();"
}

Object Type Codes

version 2
extends "Metadata/Monsters/Monster"

Transitionable
{
	create_untransitioned = "RemoveCollidability();"
}

Buffs
{
	on_lose_ralakesh_buff = "PlayEffect( Metadata/Effects/Spells/monsters_effects/act7/Ralakesh_Totem/ralakesh_buff_deactivate.ao );"
}
-- src\Data\Spectres.lua
minions["Metadata/Monsters/Ralakesh/Greust/GreustMap"] = {
    name = "Drek, Apex Hunter",
    life = 4,
    fireResist = 40,
    coldResist = 40,
    lightningResist = 40,
    chaosResist = 25,
    damage = 2,
    damageSpread = 0.2,
    attackTime = 1.455,
    attackRange = 12,
    accuracy = 1,
    weaponType1 = "Thrusting One Hand Sword",
    weaponType2 = "Shield",
    skillList = {
        "Melee",
        "GreustCharge",
        "GreustSpearThrowMap",
        "GreustTaunt",
        "GreustSpearBarrage",
        "RalakeshBlessing",
    },
    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["GreustCharge"] = {
    name = "GreustCharge",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Attack] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1.8,
    baseFlags = {
        attack = true,
        area = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "active_skill_attack_speed_+%_final",
        "active_skill_area_of_effect_radius_+%_final",
        "is_area_damage",
        "global_maim_on_hit",
    },
    levels = {
        [1] = {-35, -75, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GreustSpearThrowMap"] = {
    name = "GreustSpearThrowMap",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Attack] = true,
        [SkillType.RangedAttack] = true,
        [SkillType.MirageArcherCanUse] = true,
        [SkillType.Projectile] = true,
        [SkillType.ProjectilesFromUser] = true,
        [SkillType.Damage] = true,
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        attack = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "monster_projectile_variation",
        "base_projectile_speed_+%",
        "base_is_projectile",
        "global_bleed_on_hit",
    },
    levels = {
        [1] = {18, 50, baseMultiplier = 0.9, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GreustTaunt"] = {
    name = "GreustTaunt",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1.57,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GreustSpearBarrage"] = {
    name = "GreustSpearBarrage",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Attack] = true,
        [SkillType.Projectile] = true,
        [SkillType.Damage] = true,
        [SkillType.RangedAttack] = true,
        [SkillType.ProjectilesFromUser] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 3.9,
    baseFlags = {
        attack = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "active_skill_attack_speed_+%_final",
        "monster_reverse_point_blank_damage_-%_at_minimum_range",
        "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
        "projectile_speed_variation_+%",
        "melee_weapon_range_+",
        "ground_slam_cone_angle_override",
        "base_is_projectile",
        "cannot_stun",
    },
    levels = {
        [1] = {-73, 33, -75, 10, 50, 5, baseMultiplier = 0.98, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["RalakeshBlessing"] = {
    name = "RalakeshBlessing",
    hidden = true,
    color = 4,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 2,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "base_skill_effect_duration",
        "base_damage_taken_+%",
    },
    levels = {
        [1] = {5000, -75, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
怪物提供的经验值提高 100%
monster dropped item rarity +% [15000]
IdMonsterMapBoss
FamilyMonsterMapBoss
Domains怪物 (3)
GenerationType传奇 (3)
Req. level1
Stats
  • monster slain experience +% Min: 100 Max: 100 全域
  • monster dropped item rarity +% Min: 15000 Max: 15000 全域
  • 20% 攻击伤害格挡率
    被格挡的击中对你造成 10% 伤害
    IdMonsterAttackBlock30Bypass20
    FamilyMonsterBlockAndBypass
    Domains怪物 (3)
    GenerationType传奇 (3)
    Req. level1
    Stats
  • monster base block % Min: 20 Max: 20 全域
  • base block % damage taken Min: 10 Max: 10 全域
  • Craft Tagsblock
    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 全域
  • cannot be stunned for ms after stun finished Min: 2000 Max: 2000 全域
  • 权利猎人德里克
    人形
    怪物提供的经验值提高 100%
    monster dropped item rarity +% [15000]
    20% 攻击伤害格挡率
    被格挡的击中对你造成 10% 伤害
    cannot be stunned for ms after stun finished [2000]
    cannot be stunned while stunned [1]
    Drek, Apex Hunter
    幽魂N
    标签flesh_armour, has_one_handed_melee, has_thrusting_one_hand_sword, human, humanoid, medium_movement, medium_small_height, melee, not_int, physical_affinity, puncturing_weapon, ranged, red_blood, standalone_map_boss
    生命
    400%
    护甲
    +50%
    闪避值
    +25%
    异常状态临界值
    400%
    抗性
    40 40 40 25
    伤害
    200%
    命中
    100%
    攻击暴击率
    +5%
    暴击伤害
    +130%
    攻击距离
    6 ~ 12
    攻击间隔
    1.455 秒
    伤害分布
    ±20%
    经验值
    200%
    Model Size
    100%
    类型
    RalakeshGreustMap
    Metadata
    GreustMapStandalone
    等级
    68
    生命
    557,385
    护甲
    43,185
    闪避值
    5,924
    能量护盾
    0
    伤害
    851
    法术伤害
    1,270
    命中
    290
    攻击间隔
    0.97485
    经验值
    112,805
    异常状态临界值
    351,153
    冰缓
    1,110
    Shock
    1,110
    Brittle
    6,282
    Scorch
    1,110
    Sap
    3,068
    Melee
    攻击, 范围攻击, 技能可幻影射手, 投射物, 近战单一目标, 攻击可重复, 近战, 玩家投射物
    普通攻击
    基本伤害: 1351–2027
    攻击暴击率: 5%
    攻击间隔: 1.455 秒
    对你的敌人无情痛击。
    skill can fire arrows [1]
    skill can fire wand projectiles [1]
    GreustCharge
    攻击
    基本伤害: 1351–2027
    攻击暴击率: 5%
    攻击间隔: 1.455 秒
    冷却时间: 6 秒
    攻击速度总降 35%
    击中时造成瘫痪
    active skill area of effect radius +% final [-75]
    is area damage [1]
    GreustSpearThrowMap
    攻击, 范围攻击, 技能可幻影射手, 投射物, 玩家投射物, 伤害, 可触发
    基本伤害: 1351–2027
    攻击暴击率: 5%
    攻击伤害: 90%
    攻击间隔: 1.455 秒
    攻击伤害总降 10%
    投射物速度加快 50%
    导致流血
    base is projectile [1]
    monster projectile variation [18]
    GreustTaunt
    冷却时间: 20 秒
    RalakeshBlessing
    冷却时间: 15 秒
    基础持续时间为 5
    受到的伤害降低 75%
    GreustSpearBarrage
    攻击, 投射物, 伤害, 范围攻击, 玩家投射物
    基本伤害: 1351–2027
    攻击暴击率: 5%
    攻击伤害: 98%
    攻击间隔: 1.455 秒
    冷却时间: 9 秒
    你的击中不能眩晕敌人
    攻击伤害总降 2%
    攻击速度总降 73%
    近战打击范围 +5
    base is projectile [1]
    ground slam cone angle override [5]
    monster penalty against minions damage +% final vs player minions [-75]
    monster reverse point blank damage -% at minimum range [33]
    projectile speed variation +% [10]

    Object Type

    version 2
    extends "Metadata/Monsters/Monster"
    extends "Metadata/Monsters/StandaloneMapBoss"
    
    Actor
    {
    	slow_animations_go_to_idle = false
    }

    Object Type Codes

    version 2
    extends "Metadata/Monsters/Monster"
    extends "Metadata/Monsters/StandaloneMapBoss"
    -- src\Data\Spectres.lua
    minions["Metadata/Monsters/Ralakesh/Greust/GreustMapStandalone"] = {
        name = "Drek, Apex Hunter",
        life = 4,
        fireResist = 40,
        coldResist = 40,
        lightningResist = 40,
        chaosResist = 25,
        damage = 2,
        damageSpread = 0.2,
        attackTime = 1.455,
        attackRange = 12,
        accuracy = 1,
        weaponType1 = "Thrusting One Hand Sword",
        weaponType2 = "Shield",
        skillList = {
            "Melee",
            "GreustCharge",
            "GreustSpearThrowMap",
            "GreustTaunt",
            "GreustSpearBarrage",
            "RalakeshBlessing",
        },
        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["GreustCharge"] = {
        name = "GreustCharge",
        hidden = true,
        color = 4,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Attack] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1.8,
        baseFlags = {
            attack = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "active_skill_attack_speed_+%_final",
            "active_skill_area_of_effect_radius_+%_final",
            "is_area_damage",
            "global_maim_on_hit",
        },
        levels = {
            [1] = {-35, -75, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GreustSpearThrowMap"] = {
        name = "GreustSpearThrowMap",
        hidden = true,
        color = 4,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Attack] = true,
            [SkillType.RangedAttack] = true,
            [SkillType.MirageArcherCanUse] = true,
            [SkillType.Projectile] = true,
            [SkillType.ProjectilesFromUser] = true,
            [SkillType.Damage] = true,
            [SkillType.Triggerable] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "monster_projectile_variation",
            "base_projectile_speed_+%",
            "base_is_projectile",
            "global_bleed_on_hit",
        },
        levels = {
            [1] = {18, 50, baseMultiplier = 0.9, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GreustTaunt"] = {
        name = "GreustTaunt",
        hidden = true,
        color = 4,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1.57,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GreustSpearBarrage"] = {
        name = "GreustSpearBarrage",
        hidden = true,
        color = 4,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Attack] = true,
            [SkillType.Projectile] = true,
            [SkillType.Damage] = true,
            [SkillType.RangedAttack] = true,
            [SkillType.ProjectilesFromUser] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 3.9,
        baseFlags = {
            attack = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "active_skill_attack_speed_+%_final",
            "monster_reverse_point_blank_damage_-%_at_minimum_range",
            "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
            "projectile_speed_variation_+%",
            "melee_weapon_range_+",
            "ground_slam_cone_angle_override",
            "base_is_projectile",
            "cannot_stun",
        },
        levels = {
            [1] = {-73, 33, -75, 10, 50, 5, baseMultiplier = 0.98, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["RalakeshBlessing"] = {
        name = "RalakeshBlessing",
        hidden = true,
        color = 4,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 2,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "base_skill_effect_duration",
            "base_damage_taken_+%",
        },
        levels = {
            [1] = {5000, -75, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    
    怪物提供的经验值提高 100%
    monster dropped item rarity +% [15000]
    IdMonsterMapBoss
    FamilyMonsterMapBoss
    Domains怪物 (3)
    GenerationType传奇 (3)
    Req. level1
    Stats
  • monster slain experience +% Min: 100 Max: 100 全域
  • monster dropped item rarity +% Min: 15000 Max: 15000 全域
  • 20% 攻击伤害格挡率
    被格挡的击中对你造成 10% 伤害
    IdMonsterAttackBlock30Bypass20
    FamilyMonsterBlockAndBypass
    Domains怪物 (3)
    GenerationType传奇 (3)
    Req. level1
    Stats
  • monster base block % Min: 20 Max: 20 全域
  • base block % damage taken Min: 10 Max: 10 全域
  • Craft Tagsblock
    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 全域
  • cannot be stunned for ms after stun finished Min: 2000 Max: 2000 全域
  • 权利猎人德里克
    人形
    怪物提供的经验值提高 100%
    monster dropped item rarity +% [15000]
    20% 攻击伤害格挡率
    被格挡的击中对你造成 10% 伤害
    cannot be stunned for ms after stun finished [2000]
    cannot be stunned while stunned [1]
    Drek, Apex Hunter
    幽魂N
    标签elder_map_boss, flesh_armour, has_one_handed_melee, has_thrusting_one_hand_sword, human, humanoid, medium_movement, medium_small_height, non_attacking, not_int, puncturing_weapon, red_blood
    生命
    400%
    护甲
    +50%
    闪避值
    +25%
    异常状态临界值
    400%
    抗性
    40 40 40 25
    伤害
    200%
    命中
    100%
    攻击暴击率
    +5%
    暴击伤害
    +130%
    攻击距离
    6 ~ 12
    攻击间隔
    1.455 秒
    伤害分布
    ±20%
    经验值
    200%
    Model Size
    100%
    类型
    RalakeshGreustMap
    Metadata
    GreustMapElder

    Object Type

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

    Object Type Codes

    version 2
    extends "Metadata/Monsters/ElderBosses/ElderBossClone"
    -- src\Data\Spectres.lua
    minions["Metadata/Monsters/Ralakesh/Greust/GreustMapElder"] = {
        name = "Drek, Apex Hunter",
        life = 4,
        fireResist = 40,
        coldResist = 40,
        lightningResist = 40,
        chaosResist = 25,
        damage = 2,
        damageSpread = 0.2,
        attackTime = 1.455,
        attackRange = 12,
        accuracy = 1,
        weaponType1 = "Thrusting One Hand Sword",
        weaponType2 = "Shield",
        skillList = {
        },
        modList = {
        },
    }
    
    怪物提供的经验值提高 100%
    monster dropped item rarity +% [15000]
    IdMonsterMapBoss
    FamilyMonsterMapBoss
    Domains怪物 (3)
    GenerationType传奇 (3)
    Req. level1
    Stats
  • monster slain experience +% Min: 100 Max: 100 全域
  • monster dropped item rarity +% Min: 15000 Max: 15000 全域
  • 20% 攻击伤害格挡率
    被格挡的击中对你造成 10% 伤害
    IdMonsterAttackBlock30Bypass20
    FamilyMonsterBlockAndBypass
    Domains怪物 (3)
    GenerationType传奇 (3)
    Req. level1
    Stats
  • monster base block % Min: 20 Max: 20 全域
  • base block % damage taken Min: 10 Max: 10 全域
  • Craft Tagsblock
    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 全域
  • cannot be stunned for ms after stun finished Min: 2000 Max: 2000 全域
  • Edit

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