승리의 모방
구조물i am boss of tier [3]
monster dropped item rarity +% [4800]
monster slain experience +% [0]
밀려날 수 없음
monster dropped item rarity +% [4800]
monster slain experience +% [0]
밀려날 수 없음
Imitation Triumph
| Spectre | N |
|---|---|
| Tags | construct, MonsterBlunt_onhit_audio, mud_blood, not_dex, not_int, very_slow_movement |
생명력
420%
+60%
저항
Damage
450%
정확도
100%
치명타 명중 Chance
5%
+30%
Attack Distance
7 ~ 24
공격 속도
1.005 Second
Damage Spread
±20%
경험치
300%
Model Size
75%
Type
DoryaniMechMini
Metadata
DoryaniMechMiniIncursion
The following values do not include map affix bonuses, monster buff bonuses, altar bonuses, atlas skill bonuses.
레벨
68
생명력
32,579
3,861
708
Damage
1,049
주문 피해
1,049
정확도
2,502
공격 속도
1.005
경험치
85,902
Minion Life
29,106
Minion Damage
4,359
Minion Armour
6,756
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).
MeleeAtAnimationSpeedUnique
Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Melee, ProjectilesFromUser, AttackInPlace
기본 공격
Base Damage: 839—1259
치명타 명중 확률: 5%
공격 속도: 1.005 초
action attack or cast time uses animation length [1]
monster penalty against minions damage +% final vs player minions [100]
projectile uses contact position [1]
skill can fire wand projectiles [1]
use scaled contact offset [1]
GSDoryaniCrabFlamethrowerMini
Triggerable, Spell, Damage, AttackInPlace
치명타 명중 확률: 5%
시전 속도: 1 초
재사용 대기시간: 5 초
action attack or cast time uses animation length [1]
action do not face target [1]
base skill can be avoided by dodge roll [1]
base skill can be blocked [1]
base skill cannot be parried [1]
is area damage [1]
skill does not pathfind [1]
GSDoryaniCrabFlamethrower90RightMini
Triggerable, Spell, Damage, AttackInPlace
치명타 명중 확률: 5%
시전 속도: 1 초
재사용 대기시간: 5 초
~ 화염 피해
action attack or cast time uses animation length [1]
action do not face target [1]
base skill can be avoided by dodge roll [1]
base skill can be blocked [1]
base skill cannot be parried [1]
is area damage [1]
skill does not pathfind [1]
GSDoryaniCrabFlamethrowerCorruptMini
Triggerable, Spell, Damage, AttackInPlace
치명타 명중 확률: 5%
시전 속도: 1 초
재사용 대기시간: 5 초
~114.8 화염 피해
보조 대상 스킬의 감전 확률 300% 증가
인내 충전을 소모할 때마다 주는 기본 화염 피해 76.52~
action attack or cast time uses animation length [1]
action do not face target [1]
base skill can be avoided by dodge roll [1]
base skill can be blocked [1]
base skill cannot be parried [1]
is area damage [1]
skill does not pathfind [1]
GSDoryaniCrabFrostLaserMini
Triggerable, Spell, Damage, AttackInPlace
치명타 명중 확률: 7%
시전 속도: 1 초
재사용 대기시간: 5 초
action attack or cast time uses animation length [1]
action do not face target [1]
active skill area of effect radius +% final [0]
base skill can be avoided by dodge roll [1]
base skill can be blocked [1]
base skill effect duration [7000]
ground ice art variation [1007]
is area damage [1]
skill does not pathfind [1]
GSDoryaniCrabFrostLaser90LeftMini
Triggerable, Spell, Damage, AttackInPlace
치명타 명중 확률: 7%
시전 속도: 1 초
재사용 대기시간: 5 초
~ 냉기 피해
action attack or cast time uses animation length [1]
action do not face target [1]
active skill area of effect radius +% final [0]
base skill can be avoided by dodge roll [1]
base skill can be blocked [1]
base skill effect duration [7000]
ground ice art variation [1007]
is area damage [1]
skill does not pathfind [1]
GSDoryaniCrabFrostLaserCorruptMini
Triggerable, Spell, Damage, AttackInPlace
치명타 명중 확률: 7%
시전 속도: 1 초
재사용 대기시간: 5 초
action attack or cast time uses animation length [1]
action do not face target [1]
active skill area of effect radius +% final [0]
base skill can be avoided by dodge roll [1]
base skill can be blocked [1]
base skill effect duration [7000]
ground ice art variation [1007]
is area damage [1]
skill does not pathfind [1]
MASDoryaniCrabSweep180
Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Melee, ProjectilesFromUser, AttackInPlace
기본 공격
Base Damage: 839—1259
치명타 명중 확률: 5%
공격 피해: 130%
공격 속도: 1.005 초
재사용 대기시간: 15 초
주는 공격 피해 30% 증폭
action attack or cast time uses animation length [1]
action do not face target [1]
attack maximum action distance + [33]
projectile uses contact position [1]
skill can fire wand projectiles [1]
skill does not pathfind [1]
use scaled contact offset [1]
EAADoryaniCrabComboSlam
재사용 대기시간: 32.5 초
action attack or cast time uses animation length [1]
GADoryaniCrabSlamColdMini
Triggerable, Attack, AttackInPlace
Base Damage: 839—1259
치명타 명중 확률: 5%
공격 피해: 185%
공격 속도: 1.005 초
주는 공격 피해 85% 증폭
action attack or cast time uses animation length [1]
active skill area of effect radius +% final [0]
base skill effect duration [4000]
ground ice art variation [1007]
is area damage [1]
voll slam damage +% final at centre [50]
Object Type
Object Type Codes
-- src\Data\Spectres.lua
minions["Metadata/Monsters/LeagueIncursionNew/Golemworks/DoryaniMechMiniIncursion"] = {
name = "Imitation Triumph",
life = 4.2,
fireResist = 0,
coldResist = 0,
lightningResist = 0,
chaosResist = 0,
damage = 4.5,
damageSpread = 0.2,
attackTime = 1.005,
attackRange = 24,
accuracy = 1,
skillList = {
"MeleeAtAnimationSpeedUnique",
"MASDoryaniCrabSweep180",
"GADoryaniCrabBodySlam",
"GSDoryaniCrabBrazierSlamMini",
"GSDoryaniCrabFlamethrowerMini",
"GSDoryaniCrabFlamethrower90RightMini",
"GSDoryaniCrabFlamethrowerCorruptMini",
"GSDoryaniCrabFrostLaserMini",
"GSDoryaniCrabFrostLaser90LeftMini",
"GSDoryaniCrabFrostLaserCorruptMini",
"GADoryaniCrabSlamColdMini",
"GADoryaniCrabSlamFireMini",
"GADoryaniCrabComboSlamBasicMini",
"GADoryaniCrabIceLaserSnapMini",
"EAADoryaniCrabComboSlam",
"EDADoryaniCrabClawSlamMini",
},
modList = {
},
}
-- src\Data\Skills\spectre.lua
skills["MeleeAtAnimationSpeedUnique"] = {
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,
[SkillType.AttackInPlace] = true,
},
statDescriptionScope = "skill_stat_descriptions",
castTime = 1,
baseFlags = {
attack = true,
melee = true,
projectile = true,
},
baseMods = {
},
qualityStats = {
},
stats = {
"monster_penalty_against_minions_damage_+%_final_vs_player_minions",
"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] = {100, levelRequirement = 1, statInterpolation = {}, cost = { }, },
},
}
-- src\Data\Skills\spectre.lua
skills["MASDoryaniCrabSweep180"] = {
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,
[SkillType.AttackInPlace] = true,
},
statDescriptionScope = "skill_stat_descriptions",
castTime = 1,
baseFlags = {
attack = true,
melee = true,
projectile = true,
},
baseMods = {
},
qualityStats = {
},
stats = {
"attack_maximum_action_distance_+",
"active_skill_base_physical_damage_%_to_convert_to_cold",
"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",
"action_do_not_face_target",
"skill_does_not_pathfind",
},
levels = {
[1] = {33, 30, baseMultiplier = 1.3, levelRequirement = 1, statInterpolation = {}, cost = { }, },
},
}
-- src\Data\Skills\spectre.lua
skills["GADoryaniCrabBodySlam"] = {
name = "GADoryaniCrabBodySlam",
hidden = true,
color = ,
baseEffectiveness = 0,
incrementalEffectiveness = 0,
skillTypes = {
[SkillType.Triggerable] = true,
[SkillType.Attack] = true,
[SkillType.AttackInPlace] = true,
},
statDescriptionScope = "skill_stat_descriptions",
castTime = 1,
baseFlags = {
attack = true,
area = true,
},
baseMods = {
},
qualityStats = {
},
stats = {
"voll_slam_damage_+%_final_at_centre",
"is_area_damage",
"action_attack_or_cast_time_uses_animation_length",
},
levels = {
[1] = {40, baseMultiplier = 2, levelRequirement = 1, statInterpolation = {}, cost = { }, },
},
}
-- src\Data\Skills\spectre.lua
skills["GSDoryaniCrabBrazierSlamMini"] = {
name = "GSDoryaniCrabBrazierSlamMini",
hidden = true,
color = ,
baseEffectiveness = 0,
incrementalEffectiveness = 0,
skillTypes = {
[SkillType.Triggerable] = true,
[SkillType.Spell] = true,
[SkillType.Damage] = true,
[SkillType.AttackInPlace] = true,
},
statDescriptionScope = "geometry_spell",
castTime = 1,
baseFlags = {
spell = true,
area = true,
},
baseMods = {
},
qualityStats = {
},
stats = {
"spell_minimum_base_fire_damage",
"spell_maximum_base_fire_damage",
"ignite_chance_+%",
"voll_slam_damage_+%_final_at_centre",
"is_area_damage",
"action_attack_or_cast_time_uses_animation_length",
},
levels = {
[1] = {0.80000001192093, 1.2000000476837, 100, 40, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3}, cost = { }, },
},
}
-- src\Data\Skills\spectre.lua
skills["GSDoryaniCrabFlamethrowerMini"] = {
name = "GSDoryaniCrabFlamethrowerMini",
hidden = true,
color = ,
baseEffectiveness = 0,
incrementalEffectiveness = 0,
skillTypes = {
[SkillType.Triggerable] = true,
[SkillType.Spell] = true,
[SkillType.Damage] = true,
[SkillType.AttackInPlace] = true,
},
statDescriptionScope = "geometry_spell",
castTime = 1,
baseFlags = {
spell = true,
area = true,
},
baseMods = {
},
qualityStats = {
},
stats = {
"spell_minimum_base_fire_damage",
"spell_maximum_base_fire_damage",
"ignite_chance_+%",
"is_area_damage",
"action_attack_or_cast_time_uses_animation_length",
"action_do_not_face_target",
"skill_does_not_pathfind",
"base_skill_can_be_avoided_by_dodge_roll",
"base_skill_can_be_blocked",
"base_skill_cannot_be_parried",
},
levels = {
[1] = {0.80000001192093, 1.2000000476837, 50, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3}, cost = { }, },
},
}
-- src\Data\Skills\spectre.lua
skills["GSDoryaniCrabFlamethrower90RightMini"] = {
name = "GSDoryaniCrabFlamethrower90RightMini",
hidden = true,
color = ,
baseEffectiveness = 0,
incrementalEffectiveness = 0,
skillTypes = {
[SkillType.Triggerable] = true,
[SkillType.Spell] = true,
[SkillType.Damage] = true,
[SkillType.AttackInPlace] = true,
},
statDescriptionScope = "geometry_spell",
castTime = 1,
baseFlags = {
spell = true,
area = true,
},
baseMods = {
},
qualityStats = {
},
stats = {
"spell_minimum_base_fire_damage",
"spell_maximum_base_fire_damage",
"ignite_chance_+%",
"is_area_damage",
"action_attack_or_cast_time_uses_animation_length",
"action_do_not_face_target",
"skill_does_not_pathfind",
"base_skill_can_be_avoided_by_dodge_roll",
"base_skill_can_be_blocked",
"base_skill_cannot_be_parried",
},
levels = {
[1] = {0.80000001192093, 1.2000000476837, 50, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3}, cost = { }, },
},
}
-- src\Data\Skills\spectre.lua
skills["GSDoryaniCrabFlamethrowerCorruptMini"] = {
name = "GSDoryaniCrabFlamethrowerCorruptMini",
hidden = true,
color = ,
baseEffectiveness = 0,
incrementalEffectiveness = 0,
skillTypes = {
[SkillType.Triggerable] = true,
[SkillType.Spell] = true,
[SkillType.Damage] = true,
[SkillType.AttackInPlace] = true,
},
statDescriptionScope = "geometry_spell",
castTime = 1,
baseFlags = {
spell = true,
area = true,
},
baseMods = {
},
qualityStats = {
},
stats = {
"spell_minimum_base_lightning_damage",
"spell_maximum_base_lightning_damage",
"spell_minimum_base_fire_damage_per_removable_endurance_charge",
"spell_maximum_base_fire_damage",
"shock_chance_+%",
"ignite_chance_+%",
"is_area_damage",
"action_attack_or_cast_time_uses_animation_length",
"action_do_not_face_target",
"skill_does_not_pathfind",
"base_skill_can_be_avoided_by_dodge_roll",
"base_skill_can_be_blocked",
"base_skill_cannot_be_parried",
},
levels = {
[1] = {0.25, 0.75, 0.40000000596046, 0.60000002384186, 300, 50, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3, 3, 3}, cost = { }, },
},
}
-- src\Data\Skills\spectre.lua
skills["GSDoryaniCrabFrostLaserMini"] = {
name = "GSDoryaniCrabFrostLaserMini",
hidden = true,
color = ,
baseEffectiveness = 0,
incrementalEffectiveness = 0,
skillTypes = {
[SkillType.Triggerable] = true,
[SkillType.Spell] = true,
[SkillType.Damage] = true,
[SkillType.AttackInPlace] = true,
},
statDescriptionScope = "geometry_spell",
castTime = 1,
baseFlags = {
spell = true,
area = true,
},
baseMods = {
},
qualityStats = {
},
stats = {
"spell_minimum_base_cold_damage",
"spell_maximum_base_cold_damage",
"active_skill_area_of_effect_radius_+%_final",
"base_skill_effect_duration",
"ground_ice_art_variation",
"is_area_damage",
"action_attack_or_cast_time_uses_animation_length",
"action_do_not_face_target",
"skill_does_not_pathfind",
"base_skill_can_be_avoided_by_dodge_roll",
"base_skill_can_be_blocked",
},
levels = {
[1] = {0.80000001192093, 1.2000000476837, 0, 7000, 1007, critChance = 7, levelRequirement = 1, statInterpolation = {3, 3}, cost = { }, },
},
}
-- src\Data\Skills\spectre.lua
skills["GSDoryaniCrabFrostLaser90LeftMini"] = {
name = "GSDoryaniCrabFrostLaser90LeftMini",
hidden = true,
color = ,
baseEffectiveness = 0,
incrementalEffectiveness = 0,
skillTypes = {
[SkillType.Triggerable] = true,
[SkillType.Spell] = true,
[SkillType.Damage] = true,
[SkillType.AttackInPlace] = true,
},
statDescriptionScope = "geometry_spell",
castTime = 1,
baseFlags = {
spell = true,
area = true,
},
baseMods = {
},
qualityStats = {
},
stats = {
"spell_minimum_base_cold_damage",
"spell_maximum_base_cold_damage",
"active_skill_area_of_effect_radius_+%_final",
"base_skill_effect_duration",
"ground_ice_art_variation",
"is_area_damage",
"action_attack_or_cast_time_uses_animation_length",
"action_do_not_face_target",
"skill_does_not_pathfind",
"base_skill_can_be_avoided_by_dodge_roll",
"base_skill_can_be_blocked",
},
levels = {
[1] = {0.80000001192093, 1.2000000476837, 0, 7000, 1007, critChance = 7, levelRequirement = 1, statInterpolation = {3, 3}, cost = { }, },
},
}
-- src\Data\Skills\spectre.lua
skills["GSDoryaniCrabFrostLaserCorruptMini"] = {
name = "GSDoryaniCrabFrostLaserCorruptMini",
hidden = true,
color = ,
baseEffectiveness = 0,
incrementalEffectiveness = 0,
skillTypes = {
[SkillType.Triggerable] = true,
[SkillType.Spell] = true,
[SkillType.Damage] = true,
[SkillType.AttackInPlace] = true,
},
statDescriptionScope = "geometry_spell",
castTime = 1,
baseFlags = {
spell = true,
area = true,
},
baseMods = {
},
qualityStats = {
},
stats = {
"spell_minimum_base_cold_damage",
"spell_maximum_base_cold_damage",
"active_skill_area_of_effect_radius_+%_final",
"base_skill_effect_duration",
"ground_ice_art_variation",
"is_area_damage",
"action_attack_or_cast_time_uses_animation_length",
"action_do_not_face_target",
"skill_does_not_pathfind",
"base_skill_can_be_avoided_by_dodge_roll",
"base_skill_can_be_blocked",
},
levels = {
[1] = {0.80000001192093, 1.2000000476837, 0, 7000, 1007, critChance = 7, levelRequirement = 1, statInterpolation = {3, 3}, cost = { }, },
},
}
-- src\Data\Skills\spectre.lua
skills["GADoryaniCrabSlamColdMini"] = {
name = "GADoryaniCrabSlamColdMini",
hidden = true,
color = ,
baseEffectiveness = 0,
incrementalEffectiveness = 0,
skillTypes = {
[SkillType.Triggerable] = true,
[SkillType.Attack] = true,
[SkillType.AttackInPlace] = true,
},
statDescriptionScope = "skill_stat_descriptions",
castTime = 1,
baseFlags = {
attack = true,
area = true,
},
baseMods = {
},
qualityStats = {
},
stats = {
"active_skill_base_physical_damage_%_to_convert_to_cold",
"voll_slam_damage_+%_final_at_centre",
"active_skill_area_of_effect_radius_+%_final",
"base_skill_effect_duration",
"ground_ice_art_variation",
"is_area_damage",
"action_attack_or_cast_time_uses_animation_length",
},
levels = {
[1] = {70, 50, 0, 4000, 1007, baseMultiplier = 1.85, levelRequirement = 1, statInterpolation = {}, cost = { }, },
},
}
-- src\Data\Skills\spectre.lua
skills["GADoryaniCrabSlamFireMini"] = {
name = "GADoryaniCrabSlamFireMini",
hidden = true,
color = ,
baseEffectiveness = 0,
incrementalEffectiveness = 0,
skillTypes = {
[SkillType.Triggerable] = true,
[SkillType.Attack] = true,
[SkillType.AttackInPlace] = true,
},
statDescriptionScope = "skill_stat_descriptions",
castTime = 1,
baseFlags = {
attack = true,
area = true,
},
baseMods = {
},
qualityStats = {
},
stats = {
"active_skill_base_physical_damage_%_to_convert_to_fire",
"voll_slam_damage_+%_final_at_centre",
"is_area_damage",
"action_attack_or_cast_time_uses_animation_length",
},
levels = {
[1] = {70, 50, baseMultiplier = 1.85, levelRequirement = 1, statInterpolation = {}, cost = { }, },
},
}
-- src\Data\Skills\spectre.lua
skills["GADoryaniCrabComboSlamBasicMini"] = {
name = "GADoryaniCrabComboSlamBasicMini",
hidden = true,
color = ,
baseEffectiveness = 0,
incrementalEffectiveness = 0,
skillTypes = {
[SkillType.Triggerable] = true,
[SkillType.Attack] = true,
[SkillType.AttackInPlace] = 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 = 0.8, levelRequirement = 1, statInterpolation = {}, cost = { }, },
},
}
-- src\Data\Skills\spectre.lua
skills["GADoryaniCrabIceLaserSnapMini"] = {
name = "GADoryaniCrabIceLaserSnapMini",
hidden = true,
color = ,
baseEffectiveness = 0,
incrementalEffectiveness = 0,
skillTypes = {
[SkillType.Triggerable] = true,
[SkillType.Spell] = true,
[SkillType.Damage] = true,
[SkillType.AttackInPlace] = true,
},
statDescriptionScope = "geometry_spell",
castTime = 1,
baseFlags = {
spell = true,
area = true,
},
baseMods = {
},
qualityStats = {
},
stats = {
"spell_minimum_base_lightning_damage",
"spell_maximum_base_lightning_damage",
"active_skill_area_of_effect_radius_+%_final",
"base_skill_effect_duration",
"ground_ice_art_variation",
"is_area_damage",
"action_attack_or_cast_time_uses_animation_length",
},
levels = {
[1] = {0.5, 1.5, 0, 4000, 1007, critChance = 6, levelRequirement = 1, statInterpolation = {3, 3}, cost = { }, },
},
}
-- src\Data\Skills\spectre.lua
skills["EAADoryaniCrabComboSlam"] = {
name = "EAADoryaniCrabComboSlam",
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["EDADoryaniCrabClawSlamMini"] = {
name = "EDADoryaniCrabClawSlamMini",
hidden = true,
color = ,
baseEffectiveness = 0,
incrementalEffectiveness = 0,
skillTypes = {
[SkillType.Triggerable] = true,
[SkillType.Attack] = true,
[SkillType.AttackInPlace] = true,
},
statDescriptionScope = "skill_stat_descriptions",
castTime = 1,
baseFlags = {
attack = true,
area = true,
},
baseMods = {
},
qualityStats = {
},
stats = {
"active_skill_base_physical_damage_%_to_convert_to_cold",
"is_area_damage",
"action_attack_or_cast_time_uses_animation_length",
},
levels = {
[1] = {65, levelRequirement = 1, statInterpolation = {}, cost = { }, },
},
}
i am boss of tier [3]
monster dropped item rarity +% [4800]
monster slain experience +% [0]
| Family | MonsterActBoss |
|---|---|
| Domains | Monster (3) |
| GenerationType | 고유 (3) |
| Req. level | 1 |
| Stats |
밀려날 수 없음
| Family | ImmuneToKnockback |
|---|---|
| Domains | Monster (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.