Morwyn, the Kinslayer
Humanoid
monster dropped item rarity +% [1600]
monster slain experience +% [0]
monster dropped item quantity +% [800]
monster dropped item rarity +% [1600]
monster map key of at least same tier as current map drop chance % [25]
monster slain experience +% [7500]
unique monster guarantee one rare [1]
SpectreN
AreaAzmerian Ranges
Tagshuman, humanoid, red_blood, SpearWood_onhit_audio, very_slow_movement
Life
250%
Energy Shield From Life
10%
Armour
+40%
Evasion
+40%
Resistance
30 30 30 0
Damage
250%
Accuracy
100%
5%
Attack Distance
5 ~ 18
Attack Time
1.5 Second
Damage Spread
±20%
Experience
250%
Model Size
100%
Type
ViperNapuatziAzmeriMap
Metadata
ViperNapuatziAzmeriMap_
Level
65
Life
14,654
Armour
2,832
Evasion Rating
928
Energy Shield
1,628
Damage
531
Spell Damage
531
Accuracy
2,214
Attack Time
1.5
Experience
53,768
Minion Life
14,135
Minion Energy Shield
1,571
Minion Damage
2,072
Minion Armour
4,451
MeleeAtAnimationSpeedBoss
Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Melee, ProjectilesFromUser
Basic Attack
Base Damage: 425–637
Critical Hit Chance: 5%
Attack Time: 1.5 sec
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]
MPSViperNapuatziFastProjectile
Spell, Projectile, ProjectilesFromUser, Triggerable, Damage
Critical Hit Chance: 5%
Cast Time: 1 sec
Deals 279.3 to 418.9 Physical Damage
Fires an additional Projectile
Poisons Enemies on Hit
base is projectile [1]
distribute projectiles over contact points [1]
monster projectile variation [1038]
projectile uses contact position [1]
spell maximum action distance +% [-20]
use scaled contact offset [1]
GSViperNapuatziSpinSlam
Triggerable, Spell, Damage
Critical Hit Chance: 5%
Cast Time: 1 sec
Cooldown Time: 15 sec
Deals 1047 to 1571 Physical Damage
action attack or cast time uses animation length [1]
is area damage [1]
voll slam damage +% final at centre [25]
EGViperNapuatziSnakeSacrifice
Triggerable
Cooldown Time: 30 sec
ViperNapuatziSnakeSpark
Spell, Projectile, ProjectilesFromUser, Damage, Duration, Trappable, Totemable, Mineable, Multicastable, Triggerable, Lightning, Unleashable, Invokable
Critical Hit Chance: 5%
Cast Time: 0.7 sec
Deals 453.8 to 680.7 Physical Damage
25% reduced Projectile Speed
Fires 5 additional Projectiles
Poisons Enemies on Hit
base is projectile [1]
base skill effect duration [10000]
check for targets between initiator and projectile source [1]
distribute projectiles over contact points [1]
projectile uses contact direction [1]
projectile uses contact position [1]
projectiles should collide with flying monsters [1]
spark pathing width bounds [15]
spark projectile absolute angle override deg [50]
spark projectile bounces off walls [1]
use scaled contact offset [1]
GSViperNapuatziFireRain
Triggerable, Spell, Damage
Critical Hit Chance: 5%
Cast Time: 1 sec
Deals 872.7 to 1309 Fire Damage
is area damage [1]
GSViperNapuatziChaosRain
Triggerable, Spell, Damage
Critical Hit Chance: 5%
Cast Time: 1 sec
Deals 872.7 to 1309 Chaos Damage
is area damage [1]
voll slam damage +% final at centre [25]
GTViperNapuatziFireRain
Triggerable
action attack or cast time uses animation length [1]
GTViperNapuatziChaosRain
Triggerable
action attack or cast time uses animation length [1]
EASViperNapuatziCrissCrossCascade
Cooldown Time: 40 sec
action attack or cast time uses animation length [1]
EAAViperNapuatziDashForward
action attack or cast time uses animation length [1]
EAAViperNapuatziDashBackward
action attack or cast time uses animation length [1]
EAAViperNapuatziDashLeft
action attack or cast time uses animation length [1]
EAAViperNapuatziDashRight
action attack or cast time uses animation length [1]
MAASViperNapuatziCombo
Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Melee, ProjectilesFromUser
Basic Attack
Base Damage: 425–637
Critical Hit Chance: 5%
Attack Time: 1.5 sec
Cooldown Time: 7 sec
50% chance to Poison on Hit
action attack or cast time uses animation length [1]
attack maximum action distance + [15]
projectile uses contact position [1]
skill can fire wand projectiles [1]
use scaled contact offset [1]
MAASViperNapuatziSerpentStrike
Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Melee, ProjectilesFromUser
Basic Attack
Base Damage: 425–637
Critical Hit Chance: 5%
Attack Damage: 80%
Attack Time: 1.5 sec
Cooldown Time: 40 sec
Deals 20% less Attack Damage
action attack or cast time uses animation length [1]
attack maximum action distance + [40]
projectile uses contact position [1]
skill can fire wand projectiles [1]
use scaled contact offset [1]
ViperNapuatziLightningSpear
Attack, Projectile, Lightning
Base Damage: 425–637
Critical Hit Chance: 5%
Attack Damage: 150%
Attack Time: 1.5 sec
Cooldown Time: 10 sec
Deals 50% more Attack Damage
Converts 60% of Physical Damage to Lightning Damage
Shocks Enemies as though dealing 10% more Damage
action attack or cast time uses animation length [1]
attack maximum action distance + [80]
base is projectile [1]
no additional projectiles [1]
projectile uses contact position [1]
use scaled contact offset [1]
GAViperNapuatziSnakeWave
Triggerable, Attack
Base Damage: 425–637
Critical Hit Chance: 5%
Attack Damage: 250%
Attack Time: 1.5 sec
Deals 150% more Attack Damage
Poisons Enemies on Hit
base cannot be blocked [1]
base skill can be avoided by dodge roll [1]
is area damage [1]
CGEViperNapuatziSpear
Spell, Area, Damage, Triggerable, Duration, AreaSpell
Cast Time: 1 sec
Deals 533.3 Base Chaos Damage per second
active skill area of effect radius +% final [-5]
ground caustic art variation [1020]
infinite skill effect duration [1]
EASViperNapuatziCommandSoliders
action attack or cast time uses animation length [1]
EASViperNapuatziProjectileBarrage
Cooldown Time: 17.5 sec
action attack or cast time uses animation length [1]
spell maximum action distance +% [-40]
EASViperNapuatziSnakeRelease
Cooldown Time: 15 sec
action attack or cast time uses animation length [1]
spell maximum action distance +% [-70]
MAASViperNapuatziCombo2
Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Melee, ProjectilesFromUser
Basic Attack
Base Damage: 425–637
Critical Hit Chance: 5%
Attack Damage: 80%
Attack Time: 1.5 sec
Cooldown Time: 7 sec
Deals 20% less Attack Damage
50% chance to Poison on Hit
action attack or cast time uses animation length [1]
attack maximum action distance + [15]
projectile uses contact position [1]
skill can fire wand projectiles [1]
use scaled contact offset [1]
GAViperComboEndSlam
Triggerable, Attack
Base Damage: 425–637
Critical Hit Chance: 5%
Attack Damage: 120%
Attack Time: 1.5 sec
Deals 20% more Attack Damage
50% chance to Poison on Hit
is area damage [1]
voll slam damage +% final at centre [20]
MAASViperNapuatziStepThrust
Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Melee, ProjectilesFromUser
Basic Attack
Base Damage: 425–637
Critical Hit Chance: 5%
Attack Time: 1.5 sec
Cooldown Time: 5 sec
20% chance to Poison on Hit with Attacks
action attack or cast time uses animation length [1]
attack maximum action distance + [10]
projectile uses contact position [1]
skill can fire wand projectiles [1]
use scaled contact offset [1]
MAASViperNapuatziStepSwipes
Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Melee, ProjectilesFromUser
Basic Attack
Base Damage: 425–637
Critical Hit Chance: 5%
Attack Time: 1.5 sec
Cooldown Time: 5 sec
action attack or cast time uses animation length [1]
attack maximum action distance + [10]
projectile uses contact position [1]
skill can fire wand projectiles [1]
use scaled contact offset [1]
MAASViperNapuatziDashThrust
Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Melee, ProjectilesFromUser
Basic Attack
Base Damage: 425–637
Critical Hit Chance: 5%
Attack Damage: 70%
Attack Time: 1.5 sec
Cooldown Time: 5 sec
Deals 30% less Attack Damage
action attack or cast time uses animation length [1]
attack maximum action distance + [0]
projectile uses contact position [1]
skill can fire wand projectiles [1]
use scaled contact offset [1]
MPSViperNapuatziPoisonSpray
Spell, Projectile, ProjectilesFromUser, Triggerable, Damage
Critical Hit Chance: 5%
Cast Time: 1 sec
Deals 209.4 to 314.2 Physical Damage
Poisons Enemies on Hit
base is projectile [1]
monster projectile variation [1357]
projectile ballistic angle from reference event [1]
projectile spread radius [4]
CGEViperNapuatziGasGround
Spell, Area, Damage, Triggerable, Duration, AreaSpell
Cast Time: 1 sec
Deals 363.6 Base Chaos Damage per second
active skill area of effect radius +% final [-40]
base skill effect duration [6000]
ground caustic art variation [1023]
EASViperNapuatziDashForward
Cooldown Time: 5 sec
action attack or cast time uses animation length [1]
EASViperNapuatziDashBackward
Cooldown Time: 5 sec
action attack or cast time uses animation length [1]
EASViperNapuatziDashLeft
Cooldown Time: 5 sec
action attack or cast time uses animation length [1]
EASViperNapuatziDashRight
Cooldown Time: 5 sec
action attack or cast time uses animation length [1]
MAASViperNapuatziJumpStab
Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Melee, ProjectilesFromUser
Basic Attack
Base Damage: 425–637
Critical Hit Chance: 5%
Attack Time: 1.5 sec
Cooldown Time: 5 sec
action attack or cast time uses animation length [1]
attack maximum action distance + [0]
projectile uses contact position [1]
skill can fire wand projectiles [1]
use scaled contact offset [1]
MAASViperNapuatziJumpStabMoving
Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Melee, ProjectilesFromUser
Basic Attack
Base Damage: 425–637
Critical Hit Chance: 5%
Attack Time: 1.5 sec
Cooldown Time: 5 sec
action attack or cast time uses animation length [1]
attack maximum action distance + [-10]
projectile uses contact position [1]
skill can fire wand projectiles [1]
use scaled contact offset [1]
EAAViperNapuatziCycloneEndNoTurn
action attack or cast time uses animation length [1]
action do not face target [1]
EAAViperNapuatziCycloneEndTurn
action attack or cast time uses animation length [1]
action do not face target [1]
MAASViperNapuatziStepSweep
Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Melee, ProjectilesFromUser
Basic Attack
Base Damage: 425–637
Critical Hit Chance: 5%
Attack Time: 1.5 sec
Cooldown Time: 5 sec
action attack or cast time uses animation length [1]
attack maximum action distance + [10]
projectile uses contact position [1]
skill can fire wand projectiles [1]
use scaled contact offset [1]
MPSViperNapuatziProjectileBarrage
Spell, Projectile, ProjectilesFromUser, Triggerable, Damage
Critical Hit Chance: 5%
Cast Time: 1 sec
Deals 209.4 to 314.2 Physical Damage
Fires 10 additional Projectiles
Poisons Enemies on Hit
base is projectile [1]
distribute projectiles over contact points [1]
monster projectile variation [1038]
projectile uses contact position [1]
spell maximum action distance +% [-20]
use scaled contact offset [1]
SSMViperSummonWispPrimal
Spell, Multicastable, Triggerable
Cast Time: 1 sec
alternate minion [1119]
monster no drops or experience [1]
number of monsters to summon [1]
summon specific monsters radius +% [-99]
summoned monsters are minions [1]
SSMViperSummonWispWild
Spell, Multicastable, Triggerable
Cast Time: 1 sec
alternate minion [1120]
monster no drops or experience [1]
number of monsters to summon [1]
summon specific monsters radius +% [-99]
summoned monsters are minions [1]
SSMViperSummonWispVivid
Spell, Multicastable, Triggerable
Cast Time: 1 sec
alternate minion [1121]
monster no drops or experience [1]
number of monsters to summon [1]
summon specific monsters radius +% [-99]
summoned monsters are minions [1]
MDAzmerianViperTornado
Multicastable, Triggerable
action attack or cast time uses animation length [1]
SOAzmerianViperWhirlingSlash
Triggerable
action attack or cast time uses animation length [1]
GSAzmerianViperWhirlingSlash
Triggerable, Spell, Damage
Critical Hit Chance: 6%
Cast Time: 1 sec
Deals 65.45 to 196.4 Lightning Damage
Converts 50% of Lightning damage to Chaos damage
action attack or cast time uses animation length [1]
is area damage [1]
skill can be active blocked from all directions [1]
GSAzmerianViperTornado
Triggerable, Spell, Damage
Critical Hit Chance: 6%
Cast Time: 1 sec
Deals 65.45 to 196.4 Lightning Damage
Converts 50% of Lightning damage to Chaos damage
action attack or cast time uses animation length [1]
is area damage [1]
skill can be active blocked from all directions [1]
GSAzmerianViperWhirlingSlashAppear
Triggerable, Spell, Damage
Critical Hit Chance: 6%
Cast Time: 1 sec
Deals 584.7 to 1754 Lightning Damage
Converts 50% of Lightning damage to Chaos damage
action attack or cast time uses animation length [1]
is area damage [1]
skill can be active blocked from all directions [1]

Object Type

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

StateMachine
{
	define_shared_state =
	"
		emerging;
		spear_visible = 1;
		invisible_after_death;
		commands_left;
		float_epk;
		skip_death;
		collidable = 1;
	"

	define_shared_timer = "combat_style_cooldown;"
	on_or_create_state_collidable_1 = "MakeCollidable();"
	on_or_create_state_collidable_0 = "RemoveCollidability();"
}

Functions
{
	fix_orientation =
	"
		AddOnActionEnd(
		{
			SetOrientation( GetOrientation() + arg1, false, true );
			PlayAnimationType( Idle, 1.0, 0, 0 );
		}, true );
	"
}

Stats
{
	set_monster_delay_item_drops_millis = 4800
}

Preload
{
	preload_animated_object = "Metadata/Effects/Spells/monsters_effects/Act3_FOUR/ViperNapuatzi/ao/ViperAssembleAudio.ao"
	preload_animated_object = "Metadata/Effects/Spells/monsters_effects/Act3_FOUR/ViperNapuatzi/ao/ViperShieldsUpAudio.ao"
	preload_animated_object = "Metadata/Effects/Spells/monsters_effects/Act3_FOUR/ViperNapuatzi/ao/ViperChargeAudio.ao"
	preload_animated_object = "Metadata/Effects/Spells/monsters_effects/Act3_FOUR/ViperNapuatzi/ao/ViperDeathAudio.ao"
}

Brackets {}

Object Type Codes

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

/* ------------------------------------------------------------------------------------------------------------------- */
/* Generic */
/* ------------------------------------------------------------------------------------------------------------------- */

Render
{
	use_ao_lights = true
}

/* ------------------------------------------------------------------------------------------------------------------- */
/* Preload */
/* ------------------------------------------------------------------------------------------------------------------- */

Preload {}

/* ------------------------------------------------------------------------------------------------------------------- */
/* Skill 1 */
/* ------------------------------------------------------------------------------------------------------------------- */

BaseEvents
{
	on_wake = "IfState( dead, 1, { DisableRendering(); } );"
}

Actor {}

Animated {}

/* ------------------------------------------------------------------------------------------------------------------- */
/* Combat Dialogue */
/* ------------------------------------------------------------------------------------------------------------------- */
/*
Actor
{
	on_effect_start_SKILL1 = { Roll( 1, 1, (){ PlayTextAudio( IronCountFightStartTaunt, Metadata/Monsters/PrisonerMonsterBoss ); } ); }

	on_effect_start_SKILL2 = { Roll( 1, 4, (){ PlayTextAudio( PrisonerBoss_LeapSlam_Random, Metadata/Monsters/PrisonerMonsterBoss );} ); }

	on_effect_start_SKILL3 = { Roll( 1, 4, (){ PlayTextAudio( PrisonerBoss_CascadePunch_Random, Metadata/Monsters/PrisonerMonsterBoss );} ); }
}
*/

Brackets
{
	define_bracket =
	"
		player_engaged_dialogue;
		player_heavystun_dialogue;
	"

	player_engaged_dialogue_StrFour = "PlayTextAudio( Lythara_Emerge_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeriMap_' );" //	Marauder 
	player_engaged_dialogue_StrFourb = "PlayTextAudio( Lythara_Emerge_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeriMap_' );" //	Warrior 
	player_engaged_dialogue_IntFour = "PlayTextAudio( Lythara_Emerge_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeriMap_' );" //	Witch 
	player_engaged_dialogue_IntFourb = "PlayTextAudio( Lythara_Emerge_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeriMap_' );" //	Sorceress 
	player_engaged_dialogue_DexFour = "PlayTextAudio( Lythara_Emerge_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeriMap_' );" //	Ranger 
	player_engaged_dialogue_DexFourb = "PlayTextAudio( Lythara_Emerge_Alt_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeriMap_' );" //	Huntress 
	player_engaged_dialogue_StrDexFour = "PlayTextAudio( Lythara_Emerge_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeriMap_' );" //	Duelist 
	player_engaged_dialogue_StrDexFourb = "PlayTextAudio( Lythara_Emerge_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeriMap_' );" //	Mercenary 
	player_engaged_dialogue_DexIntFour = "PlayTextAudio( Lythara_Emerge_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeriMap_' );" //	Shadow 
	player_engaged_dialogue_DexIntFourb = "PlayTextAudio( Lythara_Emerge_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeriMap_' );" //	Monk 
	player_engaged_dialogue_StrIntFour = "PlayTextAudio( Lythara_Emerge_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeriMap_' );" //	Templar 
	player_engaged_dialogue_StrIntFourb = "PlayTextAudio( Lythara_Emerge_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeriMap_' );" //	Druid 
	player_heavystun_dialogue_StrFour = "PlayTextAudio( Lythara_Knockdown_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeriMap_' );" //	Marauder 
	player_heavystun_dialogue_StrFourb = "PlayTextAudio( Lythara_Knockdown_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeriMap_' );" //	Warrior 
	player_heavystun_dialogue_IntFour = "PlayTextAudio( Lythara_Knockdown_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeriMap_' );" //	Witch 
	player_heavystun_dialogue_IntFourb = "PlayTextAudio( Lythara_Knockdown_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeriMap_' );" //	Sorceress 
	player_heavystun_dialogue_DexFour = "PlayTextAudio( Lythara_Knockdown_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeriMap_' );" //	Ranger 
	player_heavystun_dialogue_DexFourb = "PlayTextAudio( Lythara_Knockdown_Huntress_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeriMap_' );" //	Huntress 
	player_heavystun_dialogue_StrDexFour = "PlayTextAudio( Lythara_Knockdown_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeriMap_' );" //	Duelist 
	player_heavystun_dialogue_StrDexFourb = "PlayTextAudio( Lythara_Knockdown_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeriMap_' );" //	Mercenary 
	player_heavystun_dialogue_DexIntFour = "PlayTextAudio( Lythara_Knockdown_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeriMap_' );" //	Shadow 
	player_heavystun_dialogue_DexIntFourb = "PlayTextAudio( Lythara_Knockdown_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeriMap_' );" //	Monk 
	player_heavystun_dialogue_StrIntFour = "PlayTextAudio( Lythara_Knockdown_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeriMap_' );" //	Templar 
	player_heavystun_dialogue_StrIntFourb = "PlayTextAudio( Lythara_Knockdown_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeriMap_' );" //	Druid 
}

Functions
{
	emerge_dialogue = "TriggerClassBracket( player_engaged_dialogue, arg1 );"
	heavy_stun_dialogue = "TriggerClassBracket( player_heavystun_dialogue, arg1 );"
	//ALL CLASSES: Lythara_Knockdown_Random
	//HUNTRESS: Lythara_Knockdown_Huntress_Random
	//ALL CLASSES: Lythara_Emerge_Random
	//HUNTRESS: Lythara_Emerge_Alt_Random
	
}
-- src\Data\Spectres.lua
minions["Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeriMap_"] = {
    name = "Morwyn, the Kinslayer",
    life = 2.5,
    energyShield = 0.1,
    fireResist = 0,
    coldResist = 0,
    lightningResist = 0,
    chaosResist = 0,
    damage = 2.5,
    damageSpread = 0.2,
    attackTime = 1.5,
    attackRange = 18,
    accuracy = 1,
    skillList = {
        "MeleeAtAnimationSpeedBoss",
        "MAASViperNapuatziCombo",
        "MAASViperNapuatziSerpentStrike",
        "MAASViperNapuatziCombo2",
        "MAASViperNapuatziStepThrust",
        "MAASViperNapuatziStepSwipes",
        "MAASViperNapuatziDashThrust",
        "MAASViperNapuatziJumpStab",
        "MAASViperNapuatziJumpStabMoving",
        "MAASViperNapuatziStepSweep",
        "SSMViperSummonWispPrimal",
        "SSMViperSummonWispWild",
        "SSMViperSummonWispVivid",
        "MPSViperNapuatziFastProjectile",
        "ViperNapuatziLightningSpear",
        "MPSViperNapuatziPoisonSpray",
        "MPSViperNapuatziProjectileBarrage",
        "CGEViperNapuatziSpear",
        "CGEViperNapuatziGasGround",
        "GSViperNapuatziSpinSlam",
        "GSViperNapuatziFireRain",
        "GSViperNapuatziChaosRain",
        "GAViperNapuatziSnakeWave",
        "GAViperComboEndSlam",
        "GSAzmerianViperWhirlingSlash",
        "GSAzmerianViperTornado",
        "GSAzmerianViperWhirlingSlashAppear",
        "EASViperNapuatziCrissCrossCascade",
        "EAAViperNapuatziDashForward",
        "EAAViperNapuatziDashBackward",
        "EAAViperNapuatziDashLeft",
        "EAAViperNapuatziDashRight",
        "EASViperNapuatziCommandSoliders",
        "EASViperNapuatziProjectileBarrage",
        "EASViperNapuatziSnakeRelease",
        "EASViperNapuatziDashForward",
        "EASViperNapuatziDashBackward",
        "EASViperNapuatziDashLeft",
        "EASViperNapuatziDashRight",
        "EAAViperNapuatziCycloneEndNoTurn",
        "EAAViperNapuatziCycloneEndTurn",
        "MDAzmerianViperTornado",
        "EGViperNapuatziSnakeSacrifice",
        "SOAzmerianViperWhirlingSlash",
        "GTViperNapuatziFireRain",
        "GTViperNapuatziChaosRain",
        "ViperNapuatziSnakeSpark",
    },
    modList = {
    },
}
-- src\Data\Skills\spectre.lua
skills["MeleeAtAnimationSpeedBoss"] = {
    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 = {
        "skill_can_fire_arrows",
        "skill_can_fire_wand_projectiles",
        "action_attack_or_cast_time_uses_animation_length",
        "projectile_uses_contact_position",
        "use_scaled_contact_offset",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["MAASViperNapuatziCombo"] = {
    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_+",
        "base_chance_to_poison_on_hit_%",
        "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] = {15, 50, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["MAASViperNapuatziSerpentStrike"] = {
    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_+",
        "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, baseMultiplier = 0.8, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["MAASViperNapuatziCombo2"] = {
    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_+",
        "base_chance_to_poison_on_hit_%",
        "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] = {15, 50, baseMultiplier = 0.8, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["MAASViperNapuatziStepThrust"] = {
    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_+",
        "chance_to_poison_on_hit_with_attacks_%",
        "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] = {10, 20, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["MAASViperNapuatziStepSwipes"] = {
    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_+",
        "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] = {10, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["MAASViperNapuatziDashThrust"] = {
    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_+",
        "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, baseMultiplier = 0.7, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["MAASViperNapuatziJumpStab"] = {
    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_+",
        "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, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["MAASViperNapuatziJumpStabMoving"] = {
    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_+",
        "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] = {-10, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["MAASViperNapuatziStepSweep"] = {
    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_+",
        "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] = {10, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["SSMViperSummonWispPrimal"] = {
    name = "SSMViperSummonWispPrimal",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
        [SkillType.Multicastable] = true,
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        spell = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "alternate_minion",
        "number_of_monsters_to_summon",
        "summon_specific_monsters_radius_+%",
        "summoned_monsters_are_minions",
        "monster_no_drops_or_experience",
    },
    levels = {
        [1] = {1119, 1, -99, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["SSMViperSummonWispWild"] = {
    name = "SSMViperSummonWispWild",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
        [SkillType.Multicastable] = true,
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        spell = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "alternate_minion",
        "number_of_monsters_to_summon",
        "summon_specific_monsters_radius_+%",
        "summoned_monsters_are_minions",
        "monster_no_drops_or_experience",
    },
    levels = {
        [1] = {1120, 1, -99, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["SSMViperSummonWispVivid"] = {
    name = "SSMViperSummonWispVivid",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
        [SkillType.Multicastable] = true,
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        spell = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "alternate_minion",
        "number_of_monsters_to_summon",
        "summon_specific_monsters_radius_+%",
        "summoned_monsters_are_minions",
        "monster_no_drops_or_experience",
    },
    levels = {
        [1] = {1121, 1, -99, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["MPSViperNapuatziFastProjectile"] = {
    name = "MPSViperNapuatziFastProjectile",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
        [SkillType.Projectile] = true,
        [SkillType.ProjectilesFromUser] = true,
        [SkillType.Triggerable] = true,
        [SkillType.Damage] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        spell = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "spell_minimum_base_physical_damage",
        "spell_maximum_base_physical_damage",
        "monster_projectile_variation",
        "number_of_additional_projectiles",
        "spell_maximum_action_distance_+%",
        "base_is_projectile",
        "projectile_uses_contact_position",
        "use_scaled_contact_offset",
        "global_poison_on_hit",
        "distribute_projectiles_over_contact_points",
    },
    levels = {
        [1] = {0.80000001192093, 1.2000000476837, 1038, 1, -20, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["ViperNapuatziLightningSpear"] = {
    name = "ViperNapuatziLightningSpear",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Attack] = true,
        [SkillType.Projectile] = true,
        [SkillType.Lightning] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        attack = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "active_skill_base_physical_damage_%_to_convert_to_lightning",
        "active_skill_shock_as_though_damage_+%_final",
        "attack_maximum_action_distance_+",
        "base_is_projectile",
        "projectile_uses_contact_position",
        "use_scaled_contact_offset",
        "action_attack_or_cast_time_uses_animation_length",
        "no_additional_projectiles",
    },
    levels = {
        [1] = {60, 10, 80, baseMultiplier = 1.5, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["MPSViperNapuatziPoisonSpray"] = {
    name = "MPSViperNapuatziPoisonSpray",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
        [SkillType.Projectile] = true,
        [SkillType.ProjectilesFromUser] = true,
        [SkillType.Triggerable] = true,
        [SkillType.Damage] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        spell = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "spell_minimum_base_physical_damage",
        "spell_maximum_base_physical_damage",
        "monster_projectile_variation",
        "projectile_spread_radius",
        "base_is_projectile",
        "global_poison_on_hit",
        "projectile_ballistic_angle_from_reference_event",
    },
    levels = {
        [1] = {0.80000001192093, 1.2000000476837, 1357, 4, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["MPSViperNapuatziProjectileBarrage"] = {
    name = "MPSViperNapuatziProjectileBarrage",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
        [SkillType.Projectile] = true,
        [SkillType.ProjectilesFromUser] = true,
        [SkillType.Triggerable] = true,
        [SkillType.Damage] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        spell = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "spell_minimum_base_physical_damage",
        "spell_maximum_base_physical_damage",
        "monster_projectile_variation",
        "number_of_additional_projectiles",
        "spell_maximum_action_distance_+%",
        "base_is_projectile",
        "projectile_uses_contact_position",
        "use_scaled_contact_offset",
        "global_poison_on_hit",
        "distribute_projectiles_over_contact_points",
    },
    levels = {
        [1] = {0.80000001192093, 1.2000000476837, 1038, 10, -20, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["CGEViperNapuatziSpear"] = {
    name = "CGEViperNapuatziSpear",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
        [SkillType.Area] = true,
        [SkillType.Damage] = true,
        [SkillType.Triggerable] = true,
        [SkillType.Duration] = true,
        [SkillType.AreaSpell] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        area = true,
        spell = true,
        duration = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "base_chaos_damage_to_deal_per_minute",
        "active_skill_area_of_effect_radius_+%_final",
        "ground_caustic_art_variation",
        "infinite_skill_effect_duration",
    },
    levels = {
        [1] = {1, -5, 1020, levelRequirement = 1, statInterpolation = {3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["CGEViperNapuatziGasGround"] = {
    name = "CGEViperNapuatziGasGround",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
        [SkillType.Area] = true,
        [SkillType.Damage] = true,
        [SkillType.Triggerable] = true,
        [SkillType.Duration] = true,
        [SkillType.AreaSpell] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        area = true,
        spell = true,
        duration = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "base_chaos_damage_to_deal_per_minute",
        "active_skill_area_of_effect_radius_+%_final",
        "ground_caustic_art_variation",
        "base_skill_effect_duration",
    },
    levels = {
        [1] = {1, -40, 1023, 6000, levelRequirement = 1, statInterpolation = {3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GSViperNapuatziSpinSlam"] = {
    name = "GSViperNapuatziSpinSlam",
    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_physical_damage",
        "spell_maximum_base_physical_damage",
        "voll_slam_damage_+%_final_at_centre",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {0.80000001192093, 1.2000000476837, 25, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GSViperNapuatziFireRain"] = {
    name = "GSViperNapuatziFireRain",
    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",
        "is_area_damage",
    },
    levels = {
        [1] = {0.80000001192093, 1.2000000476837, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GSViperNapuatziChaosRain"] = {
    name = "GSViperNapuatziChaosRain",
    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_chaos_damage",
        "spell_maximum_base_chaos_damage",
        "voll_slam_damage_+%_final_at_centre",
        "is_area_damage",
    },
    levels = {
        [1] = {0.80000001192093, 1.2000000476837, 25, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GAViperNapuatziSnakeWave"] = {
    name = "GAViperNapuatziSnakeWave",
    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 = {
        "is_area_damage",
        "global_poison_on_hit",
        "base_skill_can_be_avoided_by_dodge_roll",
        "base_cannot_be_blocked",
    },
    levels = {
        [1] = {baseMultiplier = 2.5, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GAViperComboEndSlam"] = {
    name = "GAViperComboEndSlam",
    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 = {
        "base_chance_to_poison_on_hit_%",
        "voll_slam_damage_+%_final_at_centre",
        "is_area_damage",
    },
    levels = {
        [1] = {50, 20, baseMultiplier = 1.2, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GSAzmerianViperWhirlingSlash"] = {
    name = "GSAzmerianViperWhirlingSlash",
    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_lightning_damage",
        "spell_maximum_base_lightning_damage",
        "active_skill_base_lightning_damage_%_to_convert_to_chaos",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
        "skill_can_be_active_blocked_from_all_directions",
    },
    levels = {
        [1] = {0.5, 1.5, 50, critChance = 6, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GSAzmerianViperTornado"] = {
    name = "GSAzmerianViperTornado",
    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_lightning_damage",
        "spell_maximum_base_lightning_damage",
        "active_skill_base_lightning_damage_%_to_convert_to_chaos",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
        "skill_can_be_active_blocked_from_all_directions",
    },
    levels = {
        [1] = {0.5, 1.5, 50, critChance = 6, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GSAzmerianViperWhirlingSlashAppear"] = {
    name = "GSAzmerianViperWhirlingSlashAppear",
    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_lightning_damage",
        "spell_maximum_base_lightning_damage",
        "active_skill_base_lightning_damage_%_to_convert_to_chaos",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
        "skill_can_be_active_blocked_from_all_directions",
    },
    levels = {
        [1] = {0.5, 1.5, 50, critChance = 6, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["EASViperNapuatziCrissCrossCascade"] = {
    name = "EASViperNapuatziCrissCrossCascade",
    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["EAAViperNapuatziDashForward"] = {
    name = "EAAViperNapuatziDashForward",
    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["EAAViperNapuatziDashBackward"] = {
    name = "EAAViperNapuatziDashBackward",
    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["EAAViperNapuatziDashLeft"] = {
    name = "EAAViperNapuatziDashLeft",
    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["EAAViperNapuatziDashRight"] = {
    name = "EAAViperNapuatziDashRight",
    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["EASViperNapuatziCommandSoliders"] = {
    name = "EASViperNapuatziCommandSoliders",
    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["EASViperNapuatziProjectileBarrage"] = {
    name = "EASViperNapuatziProjectileBarrage",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "spell_maximum_action_distance_+%",
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {-40, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["EASViperNapuatziSnakeRelease"] = {
    name = "EASViperNapuatziSnakeRelease",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "spell_maximum_action_distance_+%",
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {-70, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["EASViperNapuatziDashForward"] = {
    name = "EASViperNapuatziDashForward",
    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["EASViperNapuatziDashBackward"] = {
    name = "EASViperNapuatziDashBackward",
    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["EASViperNapuatziDashLeft"] = {
    name = "EASViperNapuatziDashLeft",
    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["EASViperNapuatziDashRight"] = {
    name = "EASViperNapuatziDashRight",
    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["EAAViperNapuatziCycloneEndNoTurn"] = {
    name = "EAAViperNapuatziCycloneEndNoTurn",
    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",
        "action_do_not_face_target",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["EAAViperNapuatziCycloneEndTurn"] = {
    name = "EAAViperNapuatziCycloneEndTurn",
    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",
        "action_do_not_face_target",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["MDAzmerianViperTornado"] = {
    name = "MDAzmerianViperTornado",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Multicastable] = true,
        [SkillType.Triggerable] = true,
    },
    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["EGViperNapuatziSnakeSacrifice"] = {
    name = "EGViperNapuatziSnakeSacrifice",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["SOAzmerianViperWhirlingSlash"] = {
    name = "SOAzmerianViperWhirlingSlash",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
    },
    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["GTViperNapuatziFireRain"] = {
    name = "GTViperNapuatziFireRain",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
    },
    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["GTViperNapuatziChaosRain"] = {
    name = "GTViperNapuatziChaosRain",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
    },
    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["ViperNapuatziSnakeSpark"] = {
    name = "ViperNapuatziSnakeSpark",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
        [SkillType.Projectile] = true,
        [SkillType.ProjectilesFromUser] = true,
        [SkillType.Damage] = true,
        [SkillType.Duration] = true,
        [SkillType.Trappable] = true,
        [SkillType.Totemable] = true,
        [SkillType.Mineable] = true,
        [SkillType.Multicastable] = true,
        [SkillType.Triggerable] = true,
        [SkillType.Lightning] = true,
        [SkillType.Unleashable] = true,
        [SkillType.Invokable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 0.7,
    baseFlags = {
        spell = true,
        projectile = true,
        duration = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "spell_minimum_base_physical_damage",
        "spell_maximum_base_physical_damage",
        "base_skill_effect_duration",
        "spark_pathing_width_bounds",
        "spark_projectile_absolute_angle_override_deg",
        "base_projectile_speed_+%",
        "number_of_additional_projectiles",
        "base_is_projectile",
        "projectiles_should_collide_with_flying_monsters",
        "projectile_uses_contact_position",
        "projectile_uses_contact_direction",
        "check_for_targets_between_initiator_and_projectile_source",
        "spark_projectile_bounces_off_walls",
        "global_poison_on_hit",
        "use_scaled_contact_offset",
        "distribute_projectiles_over_contact_points",
    },
    levels = {
        [1] = {0.80000001192093, 1.2000000476837, 10000, 15, 50, -25, 5, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
monster dropped item rarity +% [1600]
monster slain experience +% [0]
FamilyMonsterActBoss
DomainsMonster (3)
GenerationTypeUnique (3)
Req. level1
Stats
  • monster slain experience +% Min: 0 Max: 0 Global
  • monster dropped item rarity +% Min: 1600 Max: 1600 Global
  • monster dropped item quantity +% [800]
    monster dropped item rarity +% [1600]
    monster map key of at least same tier as current map drop chance % [25]
    monster slain experience +% [7500]
    unique monster guarantee one rare [1]
    FamilyMonsterMapBoss
    DomainsMonster (3)
    GenerationTypeUnique (3)
    Req. level1
    Stats
  • monster slain experience +% Min: 7500 Max: 7500 Global
  • monster dropped item rarity +% Min: 1600 Max: 1600 Global
  • monster dropped item quantity +% Min: 800 Max: 800 Global
  • unique monster guarantee one rare Min: 1 Max: 1 Global
  • monster map key of at least same tier as current map drop chance % Min: 25 Max: 25 Global
  • Morwyn, the Kinslayer
    Humanoid
    SpectreN
    Tagshuman, humanoid, red_blood, SpearWood_onhit_audio, very_slow_movement
    Life
    250%
    Resistance
    0 0 0 0
    Damage
    250%
    Accuracy
    100%
    5%
    Attack Distance
    5 ~ 15
    Attack Time
    1.5 Second
    Damage Spread
    ±20%
    Experience
    250%
    Model Size
    100%
    Type
    ViperNapuatziAzmeriStandalone
    Metadata
    ViperNapuatziAzmeriStandalone
    Level
    68
    Life
    19,393
    Armour
    2,413
    Evasion Rating
    708
    Damage
    583
    Spell Damage
    583
    Accuracy
    2,464
    Attack Time
    1.5
    Experience
    71,585
    Minion Life
    17,325
    Minion Damage
    2,422
    Minion Armour
    2,413
    MeleeAtAnimationSpeedBoss
    Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Melee, ProjectilesFromUser
    Basic Attack
    Base Damage: 466–699
    Critical Hit Chance: 5%
    Attack Time: 1.5 sec
    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]

    Object Type

    version 2
    extends "Metadata/Monsters/Monster"
    extends "Metadata/Monsters/BossBase"
    
    StateMachine
    {
    	define_shared_state =
    	"
    		emerging;
    		spear_visible = 1;
    		invisible_after_death;
    		commands_left;
    		float_epk;
    		skip_death;
    		collidable = 1;
    	"
    
    	define_shared_timer = "combat_style_cooldown;"
    	on_or_create_state_collidable_1 = "MakeCollidable();"
    	on_or_create_state_collidable_0 = "RemoveCollidability();"
    }
    
    Functions
    {
    	fix_orientation =
    	"
    		AddOnActionEnd(
    		{
    			SetOrientation( GetOrientation() + arg1, false, true );
    			PlayAnimationType( Idle, 1.0, 0, 0 );
    		}, true );
    	"
    }
    
    Stats
    {
    	set_monster_delay_item_drops_millis = 4800
    }
    
    Preload
    {
    	preload_animated_object = "Metadata/Effects/Spells/monsters_effects/Act3_FOUR/ViperNapuatzi/ao/ViperAssembleAudio.ao"
    	preload_animated_object = "Metadata/Effects/Spells/monsters_effects/Act3_FOUR/ViperNapuatzi/ao/ViperShieldsUpAudio.ao"
    	preload_animated_object = "Metadata/Effects/Spells/monsters_effects/Act3_FOUR/ViperNapuatzi/ao/ViperChargeAudio.ao"
    	preload_animated_object = "Metadata/Effects/Spells/monsters_effects/Act3_FOUR/ViperNapuatzi/ao/ViperDeathAudio.ao"
    }
    
    Brackets {}

    Object Type Codes

    version 2
    extends "Metadata/Monsters/Monster"
    extends "Metadata/Monsters/BossBase"
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Generic */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    Life
    {
    	on_spawned_alive = "AddEffectPack( 'Metadata/Effects/Spells/monsters_effects/Act3_FOUR/ViperAzmeri/epk/idle_fx.epk' );"
    
    	on_death =
    	"
    		RemoveEffectPack( 'Metadata/Effects/Spells/monsters_effects/Act3_FOUR/ViperAzmeri/epk/idle_fx.epk' );
    		AddEffectPack( 'Metadata/Effects/Utility/EPKs/EmissiveChannel_FadeOut.epk' );
    	"
    
    	on_spawned_dead =
    	"
    		RemoveEffectPack( 'Metadata/Effects/Spells/monsters_effects/Act3_FOUR/ViperAzmeri/epk/idle_fx.epk' );
    	"
    }
    
    
    Render
    {
    	use_ao_lights = true
    }
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Preload */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    Preload {}
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Skill 1 */
    /* ------------------------------------------------------------------------------------------------------------------- */
    
    BaseEvents
    {
    	on_wake = "IfState( dead, 1, { DisableRendering(); } );"
    }
    
    Actor {}
    
    Animated {}
    
    /* ------------------------------------------------------------------------------------------------------------------- */
    /* Combat Dialogue */
    /* ------------------------------------------------------------------------------------------------------------------- */
    /*
    Actor
    {
    	on_effect_start_SKILL1 = { Roll( 1, 1, (){ PlayTextAudio( IronCountFightStartTaunt, Metadata/Monsters/PrisonerMonsterBoss ); } ); }
    
    	on_effect_start_SKILL2 = { Roll( 1, 4, (){ PlayTextAudio( PrisonerBoss_LeapSlam_Random, Metadata/Monsters/PrisonerMonsterBoss );} ); }
    
    	on_effect_start_SKILL3 = { Roll( 1, 4, (){ PlayTextAudio( PrisonerBoss_CascadePunch_Random, Metadata/Monsters/PrisonerMonsterBoss );} ); }
    }
    */
    
    Brackets
    {
    	define_bracket =
    	"
    		player_engaged_dialogue;
    		player_heavystun_dialogue;
    	"
    
    	player_engaged_dialogue_StrFour = "PlayTextAudio( Lythara_Emerge_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeri' );" //	Marauder 
    	player_engaged_dialogue_StrFourb = "PlayTextAudio( Lythara_Emerge_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeri' );" //	Warrior 
    	player_engaged_dialogue_IntFour = "PlayTextAudio( Lythara_Emerge_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeri' );" //	Witch 
    	player_engaged_dialogue_IntFourb = "PlayTextAudio( Lythara_Emerge_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeri' );" //	Sorceress 
    	player_engaged_dialogue_DexFour = "PlayTextAudio( Lythara_Emerge_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeri' );" //	Ranger 
    	player_engaged_dialogue_DexFourb = "PlayTextAudio( Lythara_Emerge_Alt_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeri' );" //	Huntress 
    	player_engaged_dialogue_StrDexFour = "PlayTextAudio( Lythara_Emerge_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeri' );" //	Duelist 
    	player_engaged_dialogue_StrDexFourb = "PlayTextAudio( Lythara_Emerge_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeri' );" //	Mercenary 
    	player_engaged_dialogue_DexIntFour = "PlayTextAudio( Lythara_Emerge_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeri' );" //	Shadow 
    	player_engaged_dialogue_DexIntFourb = "PlayTextAudio( Lythara_Emerge_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeri' );" //	Monk 
    	player_engaged_dialogue_StrIntFour = "PlayTextAudio( Lythara_Emerge_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeri' );" //	Templar 
    	player_engaged_dialogue_StrIntFourb = "PlayTextAudio( Lythara_Emerge_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeri' );" //	Druid 
    	player_heavystun_dialogue_StrFour = "PlayTextAudio( Lythara_Knockdown_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeri' );" //	Marauder 
    	player_heavystun_dialogue_StrFourb = "PlayTextAudio( Lythara_Knockdown_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeri' );" //	Warrior 
    	player_heavystun_dialogue_IntFour = "PlayTextAudio( Lythara_Knockdown_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeri' );" //	Witch 
    	player_heavystun_dialogue_IntFourb = "PlayTextAudio( Lythara_Knockdown_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeri' );" //	Sorceress 
    	player_heavystun_dialogue_DexFour = "PlayTextAudio( Lythara_Knockdown_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeri' );" //	Ranger 
    	player_heavystun_dialogue_DexFourb = "PlayTextAudio( Lythara_Knockdown_Huntress_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeri' );" //	Huntress 
    	player_heavystun_dialogue_StrDexFour = "PlayTextAudio( Lythara_Knockdown_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeri' );" //	Duelist 
    	player_heavystun_dialogue_StrDexFourb = "PlayTextAudio( Lythara_Knockdown_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeri' );" //	Mercenary 
    	player_heavystun_dialogue_DexIntFour = "PlayTextAudio( Lythara_Knockdown_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeri' );" //	Shadow 
    	player_heavystun_dialogue_DexIntFourb = "PlayTextAudio( Lythara_Knockdown_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeri' );" //	Monk 
    	player_heavystun_dialogue_StrIntFour = "PlayTextAudio( Lythara_Knockdown_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeri' );" //	Templar 
    	player_heavystun_dialogue_StrIntFourb = "PlayTextAudio( Lythara_Knockdown_Random, 'Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeri' );" //	Druid 
    }
    
    Functions
    {
    	emerge_dialogue = "TriggerClassBracket( player_engaged_dialogue, arg1 );"
    	heavy_stun_dialogue = "TriggerClassBracket( player_heavystun_dialogue, arg1 );"
    	//ALL CLASSES: Lythara_Knockdown_Random
    	//HUNTRESS: Lythara_Knockdown_Huntress_Random
    	//ALL CLASSES: Lythara_Emerge_Random
    	//HUNTRESS: Lythara_Emerge_Alt_Random
    	
    }
    -- src\Data\Spectres.lua
    minions["Metadata/Monsters/VaalMonsters/ViperNapuatzi/ViperNapuatziAzmeriStandalone"] = {
        name = "Morwyn, the Kinslayer",
        life = 2.5,
        fireResist = 0,
        coldResist = 0,
        lightningResist = 0,
        chaosResist = 0,
        damage = 2.5,
        damageSpread = 0.2,
        attackTime = 1.5,
        attackRange = 15,
        accuracy = 1,
        skillList = {
            "MeleeAtAnimationSpeedBoss",
        },
        modList = {
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MeleeAtAnimationSpeedBoss"] = {
        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 = {
            "skill_can_fire_arrows",
            "skill_can_fire_wand_projectiles",
            "action_attack_or_cast_time_uses_animation_length",
            "projectile_uses_contact_position",
            "use_scaled_contact_offset",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    
    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
    Actor.slow_animations_go_to_idlefalse
    Actor.leveled_starting_effectsCTS1BossFightStart
    Stats.corpse_cannot_be_destroyed1
    Stats.base_heavy_stun_duration_ms4000
    Stats.additional_life_scaling_index6
    Life.corpse_usablefalse
    Monster.is_bosstrue
    Edit

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