烛火雕像,活化者
构造体
区域: 欧甘庄园
unique monster guarantee 50% magic items [1]
Candlemass, the Living Rite
SpectreN
Area欧甘庄园
Tags2HSharpMetal_onhit_audio, construct, mud_blood, not_dex, not_int, slow_movement, stone_construct
生命
140%
+70%
抗性
30 30 0 0
伤害
260%
命中
100%
暴击 Chance
5%
Attack Distance
6 ~ 18
攻击间隔
1.5 Second
Damage Spread
±20%
经验值
200%
Model Size
140%
Type
ManorGargoyleBoss
Metadata
ManorGargoyleBoss
等级
15
生命
188
伤害
73
法术伤害
73
命中
218
攻击间隔
1.5
经验值
616
召唤物生命
860
召唤物伤害
84
召唤物护甲
167
MMSManorGargoyleCandleProjectile
投射物, 玩家投射物, 法术, 伤害, 范围, 陷阱技能, 图腾技能, 地雷技能, 法术可重复, 可触发, 范围法术
暴击率: 5%
施放间隔: 1 秒
通用的怪物炮击技能. 与怪物投射物相似, 但带有冲击效果.
造成 47.55 - 71.33 火焰伤害
base is projectile [1]
is area damage [1]
monster penalty against minions damage +% final vs player minions [20]
GTManorGargoyleTriggeredCandleProjectile1
可触发
base is projectile [1]
is area damage [1]
GAManorGargoyleLeapImpact
可触发, 攻击
Base Damage: 59–88
暴击率: 5%
攻击间隔: 1.5 秒
伤害总降 30%
物理伤害的 40% 转化为火焰伤害
is area damage [1]
monster penalty against minions damage +% final vs player minions [200]
GAManorGargoyleLeapImpactCascade
可触发, 攻击
Base Damage: 59–88
暴击率: 5%
攻击伤害: 250%
攻击间隔: 1.5 秒
伤害总降 30%
攻击伤害总增 150%
物理伤害的 40% 转化为火焰伤害
base skill can be avoided by dodge roll [1]
base skill can be blocked [1]
is area damage [1]
monster penalty against minions damage +% final vs player minions [120]
DTTManorGargoyleLeapSlam
冷却时间: 13 秒
attack maximum action distance + [55]
GSManorGargoyleFlameBreath
可触发, 法术, 伤害
暴击率: 5%
施放间隔: 1 秒
易燃强度提高 200%
造成 11.41 - 17.12 火焰伤害
你的击中不能眩晕敌人
base skill can be avoided by dodge roll [1]
base skill can be blocked [1]
is area damage [1]
monster penalty against minions damage +% final vs player minions [250]
EASManorGargoyleFlameBreath
冷却时间: 16 秒
action attack or cast time uses animation length [1]
skill cannot be knocked back [1]
skill cannot be stunned [1]
spell maximum action distance +% [-40]
GTManorGargoyleProjectileBarrage
可触发
冷却时间: 22.5 秒
GTManorGargoyleTriggeredCandleProjectile2
可触发
base is projectile [1]
is area damage [1]
GTManorGargoyleTriggeredCandleProjectile3
可触发
base is projectile [1]
is area damage [1]
GTManorGargoyleTriggeredCandleProjectile4
可触发
base is projectile [1]
is area damage [1]
GTManorGargoyleTriggeredCandleProjectile5
可触发
base is projectile [1]
is area damage [1]
GSManorGargoyleFlameBreathSelfCircle
可触发, 法术, 伤害
暴击率: 5%
施放间隔: 1 秒
易燃强度提高 200%
造成 10.46 - 15.69 火焰伤害
你的击中不能眩晕敌人
base skill can be avoided by dodge roll [1]
base skill can be blocked [1]
is area damage [1]
GAManorGargoyleLacerate
可触发, 攻击
Base Damage: 59–88
暴击率: 5%
攻击伤害: 380%
攻击间隔: 1.5 秒
攻击伤害总增 280%
物理伤害的 80% 转化为火焰伤害
base skill can be avoided by dodge roll [1]
is area damage [1]
MAASManorGargoyleSweep
攻击, 范围攻击, 技能可幻影射手, 投射物, 近战单一目标, 近战, 玩家投射物
基础攻击
Base Damage: 59–88
暴击率: 5%
攻击伤害: 140%
攻击间隔: 1.5 秒
冷却时间: 10 秒
攻击伤害总增 40%
物理伤害的 40% 转化为火焰伤害
action attack or cast time uses animation length [1]
attack maximum action distance + [25]
base cannot be blocked [1]
monster penalty against minions damage +% final vs player minions [80]
projectile uses contact position [1]
skill can fire wand projectiles [1]
use scaled contact offset [1]
MeleeAtAnimationSpeedFire
攻击, 范围攻击, 技能可幻影射手, 投射物, 近战单一目标, 近战, 玩家投射物
基础攻击
Base Damage: 59–88
暴击率: 5%
攻击间隔: 1.5 秒
物理伤害的 40% 转化为火焰伤害
action attack or cast time uses animation length [1]
projectile uses contact position [1]
skill can fire wand projectiles [1]
use scaled contact offset [1]
MAASManorGargoyleCleave
攻击, 范围攻击, 技能可幻影射手, 投射物, 近战单一目标, 近战, 玩家投射物
基础攻击
Base Damage: 59–88
暴击率: 5%
攻击伤害: 200%
攻击间隔: 1.5 秒
冷却时间: 10 秒
攻击伤害总增 100%
物理伤害的 40% 转化为火焰伤害
action attack or cast time uses animation length [1]
attack maximum action distance + [0]
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]

Object Type

version 2
extends "Metadata/Monsters/Monster"
extends "Metadata/Monsters/BossBase"

Actor
{
	basic_action = "ChangeToStance3"
	slow_animations_go_to_idle = false
	on_event_facing_for_EmptyActionSpell = "SetAnimatedTurnDuration( 0.05 );"
	on_end_or_destroy_EmptyActionSpell = "SetAnimatedTurnDuration( 0.4 );"
	on_end_ChangeToStance1 = "MakeCollidable();"
}

Functions {}

StateMachine
{
	define_shared_state =
	"
		firework_bone;
		face_flame;
	"
}

BaseEvents
{
	on_construction_complete =
	"
		Delay( 0.1,
		{
			IfInStance( default, (){}, (){ RemoveCollidability(); } );
		} );
	"
}

Stats
{
	set_monster_delay_item_drops_millis = 2600
}

Object Type Codes

version 2
extends "Metadata/Monsters/Monster"
extends "Metadata/Monsters/BossBase"

Functions
{
	CandlesOn =
	"
		AddEffectPack( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/candle_B_On.epk' );
		AddEffectPack( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/candle_M_On.epk' );
	"

	CandlesOff =
	"
		RemoveEffectPack( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/candle_B_On.epk' );
		RemoveEffectPack( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/candle_M_On.epk' );
	"

	FlameSword = "AddEffectPackAttached( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/G_Sword_infused_fadein.epk', 'Metadata/Monsters/LeagueSanctum/Boss/Attachments/GargoyleBossWeaponHeld.ao' );"

	UnflameSword =
	"
		RemoveEffectPackAttached( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/G_Sword_infused_fadein.epk', 'Metadata/Monsters/LeagueSanctum/Boss/Attachments/GargoyleBossWeaponHeld.ao' );
		AddEffectPackAttached( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/G_Sword_infused_fadeout.epk', 'Metadata/Monsters/LeagueSanctum/Boss/Attachments/GargoyleBossWeaponHeld.ao' );
		Delay( 1.0,
		{
			RemoveEffectPackAttached( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/G_Sword_infused_fadeout.epk', 'Metadata/Monsters/LeagueSanctum/Boss/Attachments/GargoyleBossWeaponHeld.ao' );
		} );
	"

	FireworkEPK = "TriggerStateBracket( firework_pos, firework_bone );"
}

Animated
{
	on_event_flame_sword = "Call( FlameSword );"
	on_event_unflame_sword = "Call( UnflameSword );"

	on_emerge_01 =
	"
		SetRangeCheckingForGlobalAudioParams( true );
		PlayCharacterAudioEvent( CandlemassSeenComment );
	"

	on_end_death_01 = "PlayCharacterAudioEvent( CandlemassSlainComment );"
	on_end_death_bwd_01 = "PlayCharacterAudioEvent( CandlemassSlainComment );"
}

Brackets
{
	define_bracket = "firework_pos"

	firework_pos_1 =
	"
		AddEffectPack( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/candle_flareup_B_1.epk' );
		Delay( 1.0,
		{
			RemoveEffectPack( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/candle_flareup_B_1.epk' );
		} );
	"

	firework_pos_2 =
	"
		AddEffectPack( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/candle_flareup_B_2.epk' );
		Delay( 1.0,
		{
			RemoveEffectPack( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/candle_flareup_B_2.epk' );
		} );
	"

	firework_pos_3 =
	"
		AddEffectPack( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/candle_flareup_B_3.epk' );
		Delay( 1.0,
		{
			RemoveEffectPack( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/candle_flareup_B_3.epk' );
		} );
	"

	firework_pos_4 =
	"
		AddEffectPack( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/candle_flareup_B_4.epk' );
		Delay( 1.0,
		{
			RemoveEffectPack( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/candle_flareup_B_4.epk' );
		} );
	"
}

Render
{
	use_ao_lights = true
}

GlobalAudioParamEvents
{
	player_in_range_param = "WaxenInRange"
	life_percent_param = "WaxenLifePercentage"
	range = 130
}

StateMachine
{
	on_or_create_state_face_flame_1 =
	"
		this.mouth_flame = AddAttached( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/flamebreath.ao', mouth_flame );
		this.mouth_flame.PlayAnimation( loop_01 );
	"

	on_state_face_flame_0 = "RemoveAttachedObjectFromBones( mouth_flame );"
}

Life
{
	on_death = "Call( UnflameSword );"
}

BaseEvents
{
	on_construction_complete = "SetRangeCheckingForGlobalAudioParams( false );"
}
-- src\Data\Spectres.lua
minions["Metadata/Monsters/Gargoyle/GargoyleBoss/ManorGargoyleBoss"] = {
    name = "Candlemass, the Living Rite",
    life = 1.4,
    fireResist = 0,
    coldResist = 0,
    lightningResist = 0,
    chaosResist = 0,
    damage = 2.6,
    damageSpread = 0.2,
    attackTime = 1.5,
    attackRange = 18,
    accuracy = 1,
    weaponType1 = "One Hand Sword",
    skillList = {
        "MeleeAtAnimationSpeedFire",
        "MAASManorGargoyleSweep",
        "MAASManorGargoyleCleave",
        "MMSManorGargoyleCandleProjectile",
        "GAManorGargoyleLeapImpact",
        "GAManorGargoyleLeapImpactCascade",
        "GSManorGargoyleFlameBreath",
        "GSManorGargoyleFlameBreathSelfCircle",
        "GAManorGargoyleLacerate",
        "EASManorGargoyleFlameBreath",
        "GTManorGargoyleTriggeredCandleProjectile1",
        "GTManorGargoyleTriggeredCandleProjectile2",
        "GTManorGargoyleTriggeredCandleProjectile3",
        "GTManorGargoyleTriggeredCandleProjectile4",
        "GTManorGargoyleTriggeredCandleProjectile5",
        "GTManorGargoyleProjectileBarrage",
        "DTTManorGargoyleLeapSlam",
    },
    modList = {
    },
}
-- src\Data\Skills\spectre.lua
skills["MeleeAtAnimationSpeedFire"] = {
    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,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        attack = true,
        melee = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "active_skill_base_physical_damage_%_to_convert_to_fire",
        "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] = {40, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["MAASManorGargoyleSweep"] = {
    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,
    },
    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_fire",
        "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",
        "base_cannot_be_blocked",
    },
    levels = {
        [1] = {25, 40, 80, baseMultiplier = 1.4, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["MAASManorGargoyleCleave"] = {
    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,
    },
    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_fire",
        "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] = {0, 40, 100, baseMultiplier = 2, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["MMSManorGargoyleCandleProjectile"] = {
    name = "MMSManorGargoyleCandleProjectile",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    description = "Generic monster mortar skill. Like Monster Projectile but has an impact effect.",
    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.AreaSpell] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        area = true,
        spell = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "spell_minimum_base_fire_damage",
        "spell_maximum_base_fire_damage",
        "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
        "is_area_damage",
        "base_is_projectile",
    },
    levels = {
        [1] = {0.80000001192093, 1.2000000476837, 20, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GAManorGargoyleLeapImpact"] = {
    name = "GAManorGargoyleLeapImpact",
    hidden = true,
    color = ,
    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 = {
        "active_skill_damage_+%_final",
        "active_skill_base_physical_damage_%_to_convert_to_fire",
        "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
        "is_area_damage",
    },
    levels = {
        [1] = {-30, 40, 200, levelRequirement = 1, statInterpolation = {2},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GAManorGargoyleLeapImpactCascade"] = {
    name = "GAManorGargoyleLeapImpactCascade",
    hidden = true,
    color = ,
    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 = {
        "active_skill_damage_+%_final",
        "active_skill_base_physical_damage_%_to_convert_to_fire",
        "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
        "is_area_damage",
        "base_skill_can_be_avoided_by_dodge_roll",
        "base_skill_can_be_blocked",
    },
    levels = {
        [1] = {-30, 40, 120, baseMultiplier = 2.5, levelRequirement = 1, statInterpolation = {2},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GSManorGargoyleFlameBreath"] = {
    name = "GSManorGargoyleFlameBreath",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Spell] = true,
        [SkillType.Damage] = 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_+%",
        "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
        "is_area_damage",
        "cannot_stun",
        "base_skill_can_be_blocked",
        "base_skill_can_be_avoided_by_dodge_roll",
    },
    levels = {
        [1] = {0.80000001192093, 1.2000000476837, 200, 250, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GSManorGargoyleFlameBreathSelfCircle"] = {
    name = "GSManorGargoyleFlameBreathSelfCircle",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Spell] = true,
        [SkillType.Damage] = 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",
        "cannot_stun",
        "base_skill_can_be_blocked",
        "base_skill_can_be_avoided_by_dodge_roll",
    },
    levels = {
        [1] = {0.80000001192093, 1.2000000476837, 200, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GAManorGargoyleLacerate"] = {
    name = "GAManorGargoyleLacerate",
    hidden = true,
    color = ,
    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 = {
        "active_skill_base_physical_damage_%_to_convert_to_fire",
        "is_area_damage",
        "base_skill_can_be_avoided_by_dodge_roll",
    },
    levels = {
        [1] = {80, baseMultiplier = 3.8, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["EASManorGargoyleFlameBreath"] = {
    name = "EASManorGargoyleFlameBreath",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 4.57,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "spell_maximum_action_distance_+%",
        "skill_cannot_be_stunned",
        "skill_cannot_be_knocked_back",
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {-40, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GTManorGargoyleTriggeredCandleProjectile1"] = {
    name = "GTManorGargoyleTriggeredCandleProjectile1",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        area = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "is_area_damage",
        "base_is_projectile",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GTManorGargoyleTriggeredCandleProjectile2"] = {
    name = "GTManorGargoyleTriggeredCandleProjectile2",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        area = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "is_area_damage",
        "base_is_projectile",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GTManorGargoyleTriggeredCandleProjectile3"] = {
    name = "GTManorGargoyleTriggeredCandleProjectile3",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        area = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "is_area_damage",
        "base_is_projectile",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GTManorGargoyleTriggeredCandleProjectile4"] = {
    name = "GTManorGargoyleTriggeredCandleProjectile4",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        area = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "is_area_damage",
        "base_is_projectile",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GTManorGargoyleTriggeredCandleProjectile5"] = {
    name = "GTManorGargoyleTriggeredCandleProjectile5",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        area = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "is_area_damage",
        "base_is_projectile",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GTManorGargoyleProjectileBarrage"] = {
    name = "GTManorGargoyleProjectileBarrage",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 5.33,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["DTTManorGargoyleLeapSlam"] = {
    name = "DTTManorGargoyleLeapSlam",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 3.32,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "attack_maximum_action_distance_+",
    },
    levels = {
        [1] = {55, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
unique monster guarantee 50% magic items [1]
Family
Domains怪物 (3)
GenerationType传奇 (3)
Req. level1
Stats
  • unique monster guarantee 50% magic items Min: 1 Max: 1 Global
  • keyval
    StateMachine./*,
    StateMachine.boss_life_bar - controls when to show the big life bar (also requires the checkbox in MonsterVarieties to be checked)
    StateMachine.0: Life bar is hidden
    StateMachine.1: Life bar is visible, will hide on death
    StateMachine.dont_hide_lifebar_on_unaggro - controls whether the boss life bar should be hidden when the boss unaggros
    StateMachine.0: Life bar is hidden after a short duration when the boss loses aggro
    StateMachine.1: Life bar remains visible the entire time, can still be controlled by setting the disable_life_bar state
    StateMachine.show_life_bar_when_in_range - delay the life bar from showing up, until the boss is on screen (for wild bosses)
    StateMachine.0: Life bar behaves as normal
    StateMachine.1: Life bar initially only shows up when a player can see the boss on screen, this doesn't make it get removed if the player goes off screen though
    StateMachine.hidden - replaces the Unaggro+hidden_monster combo, and optionally pauses delirium fog
    StateMachine.0: Make aggro and remove hidden monster buff
    StateMachine.1: Unaggro and add hidden monster buff
    StateMachine.2: Unaggro, add hidden monster buff and pause delirium fog
    StateMachine.light - controls the boss point light, attaches to head_light_attachment if it exists (otherwise uses the default)
    StateMachine.0: Light off, handles the fade out
    StateMachine.1: Light on, handles the fade in
    StateMachine.introsequence - for bosses that are doing something before you rudely interrupt them
    StateMachine.boss uses the ChangeToStance1BossFightStart granted effect for this, which is added through the actor component in here
    StateMachine.0: no intro sequence
    StateMachine.1: boss starts off in stance2, then does change to stance1 when a proximity trigger is triggered
    StateMachine.intro_zoom - for bosses that should have the camera zoom out during the intro
    StateMachine.0: no zoom
    StateMachine.1: zoom enabled, with default values. These can be overridden in the monsters ots.
    StateMachine.intro_pan - for bosses that should have the camera pan towards them during the intro
    StateMachine.0: no pan
    StateMachine.1: pan enabled, with default values. These can be overridden in the monsters ots.
    StateMachine.use_offset_camera_controller - if this is set to 1, the boss will spawn and use a specific object as the zoom/pan center point
    StateMachine.The location of this object needs to be set by the boss too, if it isn't you will get warning message
    StateMachine.See GreatWhiteOne (shark boss) as an example, but all you really need is to set the state to 1 and move the object after it spawns
    StateMachine.0: use self as zoom/pan origin
    StateMachine.1: use a new object as the zoom/pan origin
    StateMachine.door_type - defaults to 0 for no door (or no boss control over door), other values are related to specific door types
    StateMachine.When used, also need to do 'set_telepad_indexx' in the monsters ots (BaseEvents), where x is the telepad index
    StateMachine.0: disable telepad, but only if a telepad index has been set
    StateMachine.1: force field door, forcefield blocks entrance on boss aggro, is removed on boss death (requires Metadata/MiscellaneousObjects/BossForceFieldDoor.ot in arena)
    StateMachine.2: prisoner boss door, closed on fight start, doesn't reopen afterwards (Metadata/Terrain/Gallows/Act4/4_5_2/Objects/PrisonBossDoor.ot)
    StateMachine.roaming - State for disabling instant portals on roaming bosses vs arena bosses.
    StateMachine.0: Arena Boss
    StateMachine.1: Roaming Boss
    StateMachine.arena_sector_id - If there are multiple arena bosses in an instance, each boss needs a different arena_sector_id INCLUDING roaming bosses
    StateMachine.It defaults to 1 so most bosses wont need this to be changed
    StateMachine.Currently supports up to three different bosses, but its easy to add more
    StateMachine.This state value is used to decide which boss sectors to destroy, see the triggerbracket on death in the BossBase.ots for more detail
    StateMachine.use_custom_sector_removal_handling - Set to 1 if a boss needs to use its own custom handling for sector removal on death (eg Mastodon)
    StateMachine.0: default behaviour, arena sector is removed on boss death
    StateMachine.1: custom behaviour, this disables the on death sector removal in boss base, so will need to be handled in the bosses otc AND ots
    StateMachine.quick_death_enabled - Use this for bosses with long deaths that are visible when you resurrect at checkpoint after killing them
    StateMachine.DO NOT set the quick_death state manually, this will cause the monster to do its quick death anim when it first dies
    StateMachine.0: default behaviour, death will be played at regular speed
    StateMachine.1: death anim is sped up by 10000x, this should be used for bosses that have events in their death that need to trigger
    StateMachine.2: death anim is sped up by 1000x, deaths with move events dont like being super fast so they can use this slower one
    StateMachine.am_final_boss_in_fight - This is used for multi boss fights to handle resurrecting etc after killing a single boss from fight
    StateMachine.0: reaching this state toggles part_of_multiple_boss_fight to be true, and signifies that this boss is not the final boss
    StateMachine.1: default value, will remain here unless another boss turns flips it to 0
    StateMachine.part_of_multiple_boss_fight - helper state for the above, shouldn't be interacted with manually
    StateMachine.0: currently not part of a multi boss fight
    StateMachine.1: was part of a multi boss fight at some point
    StateMachine.*/,
    StateMachine.define_shared_state =,
    StateMachine.", , ,
    StateMachine.boss_life_bar;
    StateMachine.hidden;
    StateMachine.light;
    StateMachine.introsequence;
    StateMachine.disable_life_bar;
    StateMachine.intro_zoom;
    StateMachine.intro_pan;
    StateMachine.use_offset_camera_controller;
    StateMachine.door_type;
    StateMachine.roaming;
    StateMachine.first_aggro;
    StateMachine.room_marker;
    StateMachine.arena_sector_id1;
    StateMachine.use_custom_sector_removal_handling;
    StateMachine.quick_death_enabled;
    StateMachine.quick_death;
    StateMachine.am_final_boss_in_fight1;
    StateMachine.part_of_multiple_boss_fight;
    StateMachine.dead - Boss is dead. This state is saved to the character checkpoint, so if you respawn at checkpoint this state will be automatically set. In BossBase.ots, this also calls KillSelfNoDrops().
    StateMachine.if you DON'T want this state to save/load automatically, use StateMachine{ checkpoint_save_deadfalse }
    StateMachine.0: Boss is alive
    StateMachine.1: Boss is dead
    StateMachine.2: Boss is dead and corpse is hidden
    StateMachine.define_shared_checkpoint_statedead
    StateMachine.firework_bone;
    StateMachine.face_flame;
    Actor.slow_animations_go_to_idlefalse, false
    Actor.leveled_starting_effectsCTS1BossFightStart
    Actor.basic_actionChangeToStance3
    Actor.on_event_facing_for_EmptyActionSpellSetAnimatedTurnDuration( 0.05 );
    Actor.on_end_or_destroy_EmptyActionSpellSetAnimatedTurnDuration( 0.4 );
    Actor.on_end_ChangeToStance1MakeCollidable();
    Stats.corpse_cannot_be_destroyed1
    Stats.base_heavy_stun_duration_ms4000
    Stats.additional_life_scaling_index6
    Stats.monster_delay_item_drops_millis2600
    Life.corpse_usablefalse
    Monster.is_bosstrue
    BaseEvents.on_construction_complete =
    BaseEvents.",
    BaseEvents.Delay( 0.1,
    BaseEvents.IfInStance( default, (){}, (){ RemoveCollidability(); } );
    BaseEvents.} );
    烛火雕像,活化者
    构造体
    Candlemass, the Living Rite
    SpectreN
    Tags2HSharpMetal_onhit_audio, construct, mud_blood, not_dex, not_int, slow_movement, stone_construct
    生命
    250%
    +70%
    抗性
    30 30 0 0
    伤害
    260%
    命中
    100%
    暴击 Chance
    5%
    Attack Distance
    6 ~ 18
    攻击间隔
    1.5 Second
    Damage Spread
    ±20%
    经验值
    200%
    Model Size
    140%
    Type
    ManorGargoyleBossCRUEL
    Metadata
    ManorGargoyleBossCRUEL
    等级
    68
    生命
    19,393
    4,102
    伤害
    606
    法术伤害
    606
    命中
    2,464
    攻击间隔
    1.5
    经验值
    57,268
    召唤物生命
    17,325
    召唤物伤害
    2,519
    召唤物护甲
    7,480
    MMSManorGargoyleCandleProjectile
    投射物, 玩家投射物, 法术, 伤害, 范围, 陷阱技能, 图腾技能, 地雷技能, 法术可重复, 可触发, 范围法术
    暴击率: 5%
    施放间隔: 1 秒
    通用的怪物炮击技能. 与怪物投射物相似, 但带有冲击效果.
    造成 382.6 - 573.9 火焰伤害
    base is projectile [1]
    is area damage [1]
    monster penalty against minions damage +% final vs player minions [20]
    GTManorGargoyleTriggeredCandleProjectile1
    可触发
    base is projectile [1]
    is area damage [1]
    GAManorGargoyleLeapImpact
    可触发, 攻击
    Base Damage: 485–727
    暴击率: 5%
    攻击间隔: 1.5 秒
    伤害总降 30%
    物理伤害的 40% 转化为火焰伤害
    is area damage [1]
    monster penalty against minions damage +% final vs player minions [200]
    GAManorGargoyleLeapImpactCascade
    可触发, 攻击
    Base Damage: 485–727
    暴击率: 5%
    攻击伤害: 250%
    攻击间隔: 1.5 秒
    伤害总降 30%
    攻击伤害总增 150%
    物理伤害的 40% 转化为火焰伤害
    base skill can be avoided by dodge roll [1]
    base skill can be blocked [1]
    is area damage [1]
    monster penalty against minions damage +% final vs player minions [120]
    DTTManorGargoyleLeapSlam
    冷却时间: 13 秒
    attack maximum action distance + [55]
    GSManorGargoyleFlameBreath
    可触发, 法术, 伤害
    暴击率: 5%
    施放间隔: 1 秒
    易燃强度提高 200%
    造成 91.83 - 137.7 火焰伤害
    你的击中不能眩晕敌人
    base skill can be avoided by dodge roll [1]
    base skill can be blocked [1]
    is area damage [1]
    monster penalty against minions damage +% final vs player minions [250]
    EASManorGargoyleFlameBreath
    冷却时间: 16 秒
    action attack or cast time uses animation length [1]
    skill cannot be knocked back [1]
    skill cannot be stunned [1]
    spell maximum action distance +% [-40]
    GTManorGargoyleProjectileBarrage
    可触发
    冷却时间: 22.5 秒
    GTManorGargoyleTriggeredCandleProjectile2
    可触发
    base is projectile [1]
    is area damage [1]
    GTManorGargoyleTriggeredCandleProjectile3
    可触发
    base is projectile [1]
    is area damage [1]
    GTManorGargoyleTriggeredCandleProjectile4
    可触发
    base is projectile [1]
    is area damage [1]
    GTManorGargoyleTriggeredCandleProjectile5
    可触发
    base is projectile [1]
    is area damage [1]
    GSManorGargoyleFlameBreathSelfCircle
    可触发, 法术, 伤害
    暴击率: 5%
    施放间隔: 1 秒
    易燃强度提高 200%
    造成 84.18 - 126.3 火焰伤害
    你的击中不能眩晕敌人
    base skill can be avoided by dodge roll [1]
    base skill can be blocked [1]
    is area damage [1]
    GAManorGargoyleLacerate
    可触发, 攻击
    Base Damage: 485–727
    暴击率: 5%
    攻击伤害: 380%
    攻击间隔: 1.5 秒
    攻击伤害总增 280%
    物理伤害的 80% 转化为火焰伤害
    base skill can be avoided by dodge roll [1]
    is area damage [1]
    MAASManorGargoyleSweep
    攻击, 范围攻击, 技能可幻影射手, 投射物, 近战单一目标, 近战, 玩家投射物
    基础攻击
    Base Damage: 485–727
    暴击率: 5%
    攻击伤害: 140%
    攻击间隔: 1.5 秒
    冷却时间: 10 秒
    攻击伤害总增 40%
    物理伤害的 40% 转化为火焰伤害
    action attack or cast time uses animation length [1]
    attack maximum action distance + [25]
    base cannot be blocked [1]
    monster penalty against minions damage +% final vs player minions [80]
    projectile uses contact position [1]
    skill can fire wand projectiles [1]
    use scaled contact offset [1]
    MeleeAtAnimationSpeedFire
    攻击, 范围攻击, 技能可幻影射手, 投射物, 近战单一目标, 近战, 玩家投射物
    基础攻击
    Base Damage: 485–727
    暴击率: 5%
    攻击间隔: 1.5 秒
    物理伤害的 40% 转化为火焰伤害
    action attack or cast time uses animation length [1]
    projectile uses contact position [1]
    skill can fire wand projectiles [1]
    use scaled contact offset [1]
    MAASManorGargoyleCleave
    攻击, 范围攻击, 技能可幻影射手, 投射物, 近战单一目标, 近战, 玩家投射物
    基础攻击
    Base Damage: 485–727
    暴击率: 5%
    攻击伤害: 200%
    攻击间隔: 1.5 秒
    冷却时间: 10 秒
    攻击伤害总增 100%
    物理伤害的 40% 转化为火焰伤害
    action attack or cast time uses animation length [1]
    attack maximum action distance + [0]
    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]

    Object Type

    version 2
    extends "Metadata/Monsters/Monster"
    extends "Metadata/Monsters/BossBase"
    
    Actor
    {
    	basic_action = "ChangeToStance3"
    	slow_animations_go_to_idle = false
    	on_event_facing_for_EmptyActionSpell = "SetAnimatedTurnDuration( 0.05 );"
    	on_end_or_destroy_EmptyActionSpell = "SetAnimatedTurnDuration( 0.4 );"
    	on_end_ChangeToStance1 = "MakeCollidable();"
    }
    
    Functions {}
    
    StateMachine
    {
    	define_shared_state =
    	"
    		firework_bone;
    		face_flame;
    	"
    }
    
    BaseEvents
    {
    	on_construction_complete =
    	"
    		Delay( 0.1,
    		{
    			IfInStance( default, (){}, (){ RemoveCollidability(); } );
    		} );
    	"
    }
    
    Stats
    {
    	set_monster_delay_item_drops_millis = 2600
    }

    Object Type Codes

    version 2
    extends "Metadata/Monsters/Monster"
    extends "Metadata/Monsters/BossBase"
    
    Functions
    {
    	CandlesOn =
    	"
    		AddEffectPack( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/candle_B_On.epk' );
    		AddEffectPack( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/candle_M_On.epk' );
    	"
    
    	CandlesOff =
    	"
    		RemoveEffectPack( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/candle_B_On.epk' );
    		RemoveEffectPack( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/candle_M_On.epk' );
    	"
    
    	FlameSword = "AddEffectPackAttached( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/G_Sword_infused_fadein.epk', 'Metadata/Monsters/LeagueSanctum/Boss/Attachments/GargoyleBossWeaponHeld.ao' );"
    
    	UnflameSword =
    	"
    		RemoveEffectPackAttached( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/G_Sword_infused_fadein.epk', 'Metadata/Monsters/LeagueSanctum/Boss/Attachments/GargoyleBossWeaponHeld.ao' );
    		AddEffectPackAttached( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/G_Sword_infused_fadeout.epk', 'Metadata/Monsters/LeagueSanctum/Boss/Attachments/GargoyleBossWeaponHeld.ao' );
    		Delay( 1.0,
    		{
    			RemoveEffectPackAttached( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/G_Sword_infused_fadeout.epk', 'Metadata/Monsters/LeagueSanctum/Boss/Attachments/GargoyleBossWeaponHeld.ao' );
    		} );
    	"
    
    	FireworkEPK = "TriggerStateBracket( firework_pos, firework_bone );"
    }
    
    Animated
    {
    	on_event_flame_sword = "Call( FlameSword );"
    	on_event_unflame_sword = "Call( UnflameSword );"
    
    	on_emerge_01 =
    	"
    		SetRangeCheckingForGlobalAudioParams( true );
    		PlayCharacterAudioEvent( CandlemassSeenComment );
    	"
    
    	on_end_death_01 = "PlayCharacterAudioEvent( CandlemassSlainComment );"
    	on_end_death_bwd_01 = "PlayCharacterAudioEvent( CandlemassSlainComment );"
    }
    
    Brackets
    {
    	define_bracket = "firework_pos"
    
    	firework_pos_1 =
    	"
    		AddEffectPack( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/candle_flareup_B_1.epk' );
    		Delay( 1.0,
    		{
    			RemoveEffectPack( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/candle_flareup_B_1.epk' );
    		} );
    	"
    
    	firework_pos_2 =
    	"
    		AddEffectPack( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/candle_flareup_B_2.epk' );
    		Delay( 1.0,
    		{
    			RemoveEffectPack( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/candle_flareup_B_2.epk' );
    		} );
    	"
    
    	firework_pos_3 =
    	"
    		AddEffectPack( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/candle_flareup_B_3.epk' );
    		Delay( 1.0,
    		{
    			RemoveEffectPack( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/candle_flareup_B_3.epk' );
    		} );
    	"
    
    	firework_pos_4 =
    	"
    		AddEffectPack( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/candle_flareup_B_4.epk' );
    		Delay( 1.0,
    		{
    			RemoveEffectPack( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/epk/candle_flareup_B_4.epk' );
    		} );
    	"
    }
    
    Render
    {
    	use_ao_lights = true
    }
    
    GlobalAudioParamEvents
    {
    	player_in_range_param = "WaxenInRange"
    	life_percent_param = "WaxenLifePercentage"
    	range = 130
    }
    
    StateMachine
    {
    	on_or_create_state_face_flame_1 =
    	"
    		this.mouth_flame = AddAttached( 'Metadata/Effects/Spells/monsters_effects/League_Sanctum/GargoyleBoss/flamebreath.ao', mouth_flame );
    		this.mouth_flame.PlayAnimation( loop_01 );
    	"
    
    	on_state_face_flame_0 = "RemoveAttachedObjectFromBones( mouth_flame );"
    }
    
    Life
    {
    	on_death = "Call( UnflameSword );"
    }
    
    BaseEvents
    {
    	on_construction_complete = "SetRangeCheckingForGlobalAudioParams( false );"
    }
    -- src\Data\Spectres.lua
    minions["Metadata/Monsters/Gargoyle/GargoyleBoss/ManorGargoyleBossCRUEL"] = {
        name = "Candlemass, the Living Rite",
        life = 2.5,
        fireResist = 0,
        coldResist = 0,
        lightningResist = 0,
        chaosResist = 0,
        damage = 2.6,
        damageSpread = 0.2,
        attackTime = 1.5,
        attackRange = 18,
        accuracy = 1,
        weaponType1 = "One Hand Sword",
        skillList = {
            "MeleeAtAnimationSpeedFire",
            "MAASManorGargoyleSweep",
            "MAASManorGargoyleCleave",
            "MMSManorGargoyleCandleProjectile",
            "GAManorGargoyleLeapImpact",
            "GAManorGargoyleLeapImpactCascade",
            "GSManorGargoyleFlameBreath",
            "GSManorGargoyleFlameBreathSelfCircle",
            "GAManorGargoyleLacerate",
            "EASManorGargoyleFlameBreath",
            "GTManorGargoyleTriggeredCandleProjectile1",
            "GTManorGargoyleTriggeredCandleProjectile2",
            "GTManorGargoyleTriggeredCandleProjectile3",
            "GTManorGargoyleTriggeredCandleProjectile4",
            "GTManorGargoyleTriggeredCandleProjectile5",
            "GTManorGargoyleProjectileBarrage",
            "DTTManorGargoyleLeapSlam",
        },
        modList = {
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MeleeAtAnimationSpeedFire"] = {
        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,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            melee = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "active_skill_base_physical_damage_%_to_convert_to_fire",
            "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] = {40, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MAASManorGargoyleSweep"] = {
        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,
        },
        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_fire",
            "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",
            "base_cannot_be_blocked",
        },
        levels = {
            [1] = {25, 40, 80, baseMultiplier = 1.4, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MAASManorGargoyleCleave"] = {
        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,
        },
        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_fire",
            "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] = {0, 40, 100, baseMultiplier = 2, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MMSManorGargoyleCandleProjectile"] = {
        name = "MMSManorGargoyleCandleProjectile",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        description = "Generic monster mortar skill. Like Monster Projectile but has an impact effect.",
        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.AreaSpell] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            area = true,
            spell = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "spell_minimum_base_fire_damage",
            "spell_maximum_base_fire_damage",
            "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
            "is_area_damage",
            "base_is_projectile",
        },
        levels = {
            [1] = {0.80000001192093, 1.2000000476837, 20, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GAManorGargoyleLeapImpact"] = {
        name = "GAManorGargoyleLeapImpact",
        hidden = true,
        color = ,
        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 = {
            "active_skill_damage_+%_final",
            "active_skill_base_physical_damage_%_to_convert_to_fire",
            "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
            "is_area_damage",
        },
        levels = {
            [1] = {-30, 40, 200, levelRequirement = 1, statInterpolation = {2},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GAManorGargoyleLeapImpactCascade"] = {
        name = "GAManorGargoyleLeapImpactCascade",
        hidden = true,
        color = ,
        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 = {
            "active_skill_damage_+%_final",
            "active_skill_base_physical_damage_%_to_convert_to_fire",
            "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
            "is_area_damage",
            "base_skill_can_be_avoided_by_dodge_roll",
            "base_skill_can_be_blocked",
        },
        levels = {
            [1] = {-30, 40, 120, baseMultiplier = 2.5, levelRequirement = 1, statInterpolation = {2},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GSManorGargoyleFlameBreath"] = {
        name = "GSManorGargoyleFlameBreath",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Spell] = true,
            [SkillType.Damage] = 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_+%",
            "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
            "is_area_damage",
            "cannot_stun",
            "base_skill_can_be_blocked",
            "base_skill_can_be_avoided_by_dodge_roll",
        },
        levels = {
            [1] = {0.80000001192093, 1.2000000476837, 200, 250, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GSManorGargoyleFlameBreathSelfCircle"] = {
        name = "GSManorGargoyleFlameBreathSelfCircle",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Spell] = true,
            [SkillType.Damage] = 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",
            "cannot_stun",
            "base_skill_can_be_blocked",
            "base_skill_can_be_avoided_by_dodge_roll",
        },
        levels = {
            [1] = {0.80000001192093, 1.2000000476837, 200, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GAManorGargoyleLacerate"] = {
        name = "GAManorGargoyleLacerate",
        hidden = true,
        color = ,
        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 = {
            "active_skill_base_physical_damage_%_to_convert_to_fire",
            "is_area_damage",
            "base_skill_can_be_avoided_by_dodge_roll",
        },
        levels = {
            [1] = {80, baseMultiplier = 3.8, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["EASManorGargoyleFlameBreath"] = {
        name = "EASManorGargoyleFlameBreath",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 4.57,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "spell_maximum_action_distance_+%",
            "skill_cannot_be_stunned",
            "skill_cannot_be_knocked_back",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {-40, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GTManorGargoyleTriggeredCandleProjectile1"] = {
        name = "GTManorGargoyleTriggeredCandleProjectile1",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            area = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "is_area_damage",
            "base_is_projectile",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GTManorGargoyleTriggeredCandleProjectile2"] = {
        name = "GTManorGargoyleTriggeredCandleProjectile2",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            area = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "is_area_damage",
            "base_is_projectile",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GTManorGargoyleTriggeredCandleProjectile3"] = {
        name = "GTManorGargoyleTriggeredCandleProjectile3",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            area = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "is_area_damage",
            "base_is_projectile",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GTManorGargoyleTriggeredCandleProjectile4"] = {
        name = "GTManorGargoyleTriggeredCandleProjectile4",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            area = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "is_area_damage",
            "base_is_projectile",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GTManorGargoyleTriggeredCandleProjectile5"] = {
        name = "GTManorGargoyleTriggeredCandleProjectile5",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            area = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "is_area_damage",
            "base_is_projectile",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GTManorGargoyleProjectileBarrage"] = {
        name = "GTManorGargoyleProjectileBarrage",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 5.33,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["DTTManorGargoyleLeapSlam"] = {
        name = "DTTManorGargoyleLeapSlam",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 3.32,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "attack_maximum_action_distance_+",
        },
        levels = {
            [1] = {55, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    
    keyval
    StateMachine./*,
    StateMachine.boss_life_bar - controls when to show the big life bar (also requires the checkbox in MonsterVarieties to be checked)
    StateMachine.0: Life bar is hidden
    StateMachine.1: Life bar is visible, will hide on death
    StateMachine.dont_hide_lifebar_on_unaggro - controls whether the boss life bar should be hidden when the boss unaggros
    StateMachine.0: Life bar is hidden after a short duration when the boss loses aggro
    StateMachine.1: Life bar remains visible the entire time, can still be controlled by setting the disable_life_bar state
    StateMachine.show_life_bar_when_in_range - delay the life bar from showing up, until the boss is on screen (for wild bosses)
    StateMachine.0: Life bar behaves as normal
    StateMachine.1: Life bar initially only shows up when a player can see the boss on screen, this doesn't make it get removed if the player goes off screen though
    StateMachine.hidden - replaces the Unaggro+hidden_monster combo, and optionally pauses delirium fog
    StateMachine.0: Make aggro and remove hidden monster buff
    StateMachine.1: Unaggro and add hidden monster buff
    StateMachine.2: Unaggro, add hidden monster buff and pause delirium fog
    StateMachine.light - controls the boss point light, attaches to head_light_attachment if it exists (otherwise uses the default)
    StateMachine.0: Light off, handles the fade out
    StateMachine.1: Light on, handles the fade in
    StateMachine.introsequence - for bosses that are doing something before you rudely interrupt them
    StateMachine.boss uses the ChangeToStance1BossFightStart granted effect for this, which is added through the actor component in here
    StateMachine.0: no intro sequence
    StateMachine.1: boss starts off in stance2, then does change to stance1 when a proximity trigger is triggered
    StateMachine.intro_zoom - for bosses that should have the camera zoom out during the intro
    StateMachine.0: no zoom
    StateMachine.1: zoom enabled, with default values. These can be overridden in the monsters ots.
    StateMachine.intro_pan - for bosses that should have the camera pan towards them during the intro
    StateMachine.0: no pan
    StateMachine.1: pan enabled, with default values. These can be overridden in the monsters ots.
    StateMachine.use_offset_camera_controller - if this is set to 1, the boss will spawn and use a specific object as the zoom/pan center point
    StateMachine.The location of this object needs to be set by the boss too, if it isn't you will get warning message
    StateMachine.See GreatWhiteOne (shark boss) as an example, but all you really need is to set the state to 1 and move the object after it spawns
    StateMachine.0: use self as zoom/pan origin
    StateMachine.1: use a new object as the zoom/pan origin
    StateMachine.door_type - defaults to 0 for no door (or no boss control over door), other values are related to specific door types
    StateMachine.When used, also need to do 'set_telepad_indexx' in the monsters ots (BaseEvents), where x is the telepad index
    StateMachine.0: disable telepad, but only if a telepad index has been set
    StateMachine.1: force field door, forcefield blocks entrance on boss aggro, is removed on boss death (requires Metadata/MiscellaneousObjects/BossForceFieldDoor.ot in arena)
    StateMachine.2: prisoner boss door, closed on fight start, doesn't reopen afterwards (Metadata/Terrain/Gallows/Act4/4_5_2/Objects/PrisonBossDoor.ot)
    StateMachine.roaming - State for disabling instant portals on roaming bosses vs arena bosses.
    StateMachine.0: Arena Boss
    StateMachine.1: Roaming Boss
    StateMachine.arena_sector_id - If there are multiple arena bosses in an instance, each boss needs a different arena_sector_id INCLUDING roaming bosses
    StateMachine.It defaults to 1 so most bosses wont need this to be changed
    StateMachine.Currently supports up to three different bosses, but its easy to add more
    StateMachine.This state value is used to decide which boss sectors to destroy, see the triggerbracket on death in the BossBase.ots for more detail
    StateMachine.use_custom_sector_removal_handling - Set to 1 if a boss needs to use its own custom handling for sector removal on death (eg Mastodon)
    StateMachine.0: default behaviour, arena sector is removed on boss death
    StateMachine.1: custom behaviour, this disables the on death sector removal in boss base, so will need to be handled in the bosses otc AND ots
    StateMachine.quick_death_enabled - Use this for bosses with long deaths that are visible when you resurrect at checkpoint after killing them
    StateMachine.DO NOT set the quick_death state manually, this will cause the monster to do its quick death anim when it first dies
    StateMachine.0: default behaviour, death will be played at regular speed
    StateMachine.1: death anim is sped up by 10000x, this should be used for bosses that have events in their death that need to trigger
    StateMachine.2: death anim is sped up by 1000x, deaths with move events dont like being super fast so they can use this slower one
    StateMachine.am_final_boss_in_fight - This is used for multi boss fights to handle resurrecting etc after killing a single boss from fight
    StateMachine.0: reaching this state toggles part_of_multiple_boss_fight to be true, and signifies that this boss is not the final boss
    StateMachine.1: default value, will remain here unless another boss turns flips it to 0
    StateMachine.part_of_multiple_boss_fight - helper state for the above, shouldn't be interacted with manually
    StateMachine.0: currently not part of a multi boss fight
    StateMachine.1: was part of a multi boss fight at some point
    StateMachine.*/,
    StateMachine.define_shared_state =,
    StateMachine.", , ,
    StateMachine.boss_life_bar;
    StateMachine.hidden;
    StateMachine.light;
    StateMachine.introsequence;
    StateMachine.disable_life_bar;
    StateMachine.intro_zoom;
    StateMachine.intro_pan;
    StateMachine.use_offset_camera_controller;
    StateMachine.door_type;
    StateMachine.roaming;
    StateMachine.first_aggro;
    StateMachine.room_marker;
    StateMachine.arena_sector_id1;
    StateMachine.use_custom_sector_removal_handling;
    StateMachine.quick_death_enabled;
    StateMachine.quick_death;
    StateMachine.am_final_boss_in_fight1;
    StateMachine.part_of_multiple_boss_fight;
    StateMachine.dead - Boss is dead. This state is saved to the character checkpoint, so if you respawn at checkpoint this state will be automatically set. In BossBase.ots, this also calls KillSelfNoDrops().
    StateMachine.if you DON'T want this state to save/load automatically, use StateMachine{ checkpoint_save_deadfalse }
    StateMachine.0: Boss is alive
    StateMachine.1: Boss is dead
    StateMachine.2: Boss is dead and corpse is hidden
    StateMachine.define_shared_checkpoint_statedead
    StateMachine.firework_bone;
    StateMachine.face_flame;
    Actor.slow_animations_go_to_idlefalse, false
    Actor.leveled_starting_effectsCTS1BossFightStart
    Actor.basic_actionChangeToStance3
    Actor.on_event_facing_for_EmptyActionSpellSetAnimatedTurnDuration( 0.05 );
    Actor.on_end_or_destroy_EmptyActionSpellSetAnimatedTurnDuration( 0.4 );
    Actor.on_end_ChangeToStance1MakeCollidable();
    Stats.corpse_cannot_be_destroyed1
    Stats.base_heavy_stun_duration_ms4000
    Stats.additional_life_scaling_index6
    Stats.monster_delay_item_drops_millis2600
    Life.corpse_usablefalse
    Monster.is_bosstrue
    BaseEvents.on_construction_complete =
    BaseEvents.",
    BaseEvents.Delay( 0.1,
    BaseEvents.IfInStance( default, (){}, (){ RemoveCollidability(); } );
    BaseEvents.} );
    Edit

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