Morwyn, Pourfendeuse de Marmailleux
Humanoïde
monster dropped item rarity +% [6000]
monster slain experience +% [250]
Morwyn, the Kinslayer
SpectreN
AreaCrêtes azmériennes
Tagshuman, humanoid, red_blood, SpearWood_onhit_audio, very_slow_movement
Vie
250%
Energy Shield From Life
10%
+40%
Évasion
+40%
Résistance
30 30 30 0
Damage
250%
Précision
100%
Attack Distance
5 ~ 18
Temps d'attaque
1.5 Second
Damage Spread
±20%
Expérience
250%
Model Size
100%
Type
ViperNapuatziAzmeriMap
Metadata
ViperNapuatziAzmeriMap_
Niveau
65
Vie
14,654
2,832
Damage
531
Dégâts des sorts
531
Précision
2,228
Temps d'attaque
1.5
Expérience
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
Attaque de base
Base Damage: 425–637
Chances de Touche critique: 5%
Temps d'attaque: 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
Chances de Touche critique: 5%
Temps d'incantation: 1 sec.
Inflige 279.3 à 418.9 Dégâts Physiques
Tire un Projectile supplémentaire
Empoisonne les Ennemis au Toucher
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
Chances de Touche critique: 5%
Temps d'incantation: 1 sec.
Temps de recharge: 15 sec.
Inflige 1047 à 1571 Dégâts Physiques
action attack or cast time uses animation length [1]
is area damage [1]
voll slam damage +% final at centre [25]
EGViperNapuatziSnakeSacrifice
Triggerable
Temps de recharge: 30 sec.
ViperNapuatziSnakeSpark
Spell, Projectile, ProjectilesFromUser, Damage, Duration, Trappable, Totemable, Mineable, Multicastable, Triggerable, Lightning, Unleashable, Invokable
Chances de Touche critique: 5%
Temps d'incantation: 0.7 sec.
Inflige 453.8 à 680.7 Dégâts Physiques
25% de Réduction de la Vitesse des Projectiles
Tire Projectiles supplémentaires
Empoisonne les Ennemis au Toucher
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
Chances de Touche critique: 5%
Temps d'incantation: 1 sec.
Inflige 872.7 à 1309 Dégâts de Feu
is area damage [1]
GSViperNapuatziChaosRain
Triggerable, Spell, Damage
Chances de Touche critique: 5%
Temps d'incantation: 1 sec.
Inflige 872.7 à 1309 Dégâts de Chaos
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
Temps de recharge: 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
Attaque de base
Base Damage: 425–637
Chances de Touche critique: 5%
Temps d'attaque: 1.5 sec.
Temps de recharge: 7 sec.
50% de chances d'Empoisonner au Toucher
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
Attaque de base
Base Damage: 425–637
Chances de Touche critique: 5%
Dégâts d'Attaque: 80%
Temps d'attaque: 1.5 sec.
Temps de recharge: 40 sec.
20% de Perte de Dégâts d'Attaque
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
Chances de Touche critique: 5%
Dégâts d'Attaque: 150%
Temps d'attaque: 1.5 sec.
Temps de recharge: 10 sec.
50% Davantage de Dégâts d'Attaque
Convertit 60% des Dégâts Physiques en Dégâts de Foudre
Électrocute les Ennemis comme si vous aviez 10% Davantage de Dégâts
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
Chances de Touche critique: 5%
Dégâts d'Attaque: 250%
Temps d'attaque: 1.5 sec.
150% Davantage de Dégâts d'Attaque
Empoisonne les Ennemis au Toucher
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
Temps d'incantation: 1 sec.
Inflige 533.3 Dégâts de Chaos de base par seconde
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
Temps de recharge: 17.5 sec.
action attack or cast time uses animation length [1]
spell maximum action distance +% [-40]
EASViperNapuatziSnakeRelease
Temps de recharge: 15 sec.
action attack or cast time uses animation length [1]
spell maximum action distance +% [-70]
MAASViperNapuatziCombo2
Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Melee, ProjectilesFromUser
Attaque de base
Base Damage: 425–637
Chances de Touche critique: 5%
Dégâts d'Attaque: 80%
Temps d'attaque: 1.5 sec.
Temps de recharge: 7 sec.
20% de Perte de Dégâts d'Attaque
50% de chances d'Empoisonner au Toucher
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
Chances de Touche critique: 5%
Dégâts d'Attaque: 120%
Temps d'attaque: 1.5 sec.
20% Davantage de Dégâts d'Attaque
50% de chances d'Empoisonner au Toucher
is area damage [1]
voll slam damage +% final at centre [20]
MAASViperNapuatziStepThrust
Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Melee, ProjectilesFromUser
Attaque de base
Base Damage: 425–637
Chances de Touche critique: 5%
Temps d'attaque: 1.5 sec.
Temps de recharge: 5 sec.
20% de chances d'Empoisonner au Toucher avec les Attaques
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
Attaque de base
Base Damage: 425–637
Chances de Touche critique: 5%
Temps d'attaque: 1.5 sec.
Temps de recharge: 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
Attaque de base
Base Damage: 425–637
Chances de Touche critique: 5%
Dégâts d'Attaque: 70%
Temps d'attaque: 1.5 sec.
Temps de recharge: 5 sec.
30% de Perte de Dégâts d'Attaque
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
Chances de Touche critique: 5%
Temps d'incantation: 1 sec.
Inflige 209.4 à 314.2 Dégâts Physiques
Empoisonne les Ennemis au Toucher
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
Temps d'incantation: 1 sec.
Inflige 363.6 Dégâts de Chaos de base par seconde
active skill area of effect radius +% final [-40]
base skill effect duration [6000]
ground caustic art variation [1023]
EASViperNapuatziDashForward
Temps de recharge: 5 sec.
action attack or cast time uses animation length [1]
EASViperNapuatziDashBackward
Temps de recharge: 5 sec.
action attack or cast time uses animation length [1]
EASViperNapuatziDashLeft
Temps de recharge: 5 sec.
action attack or cast time uses animation length [1]
EASViperNapuatziDashRight
Temps de recharge: 5 sec.
action attack or cast time uses animation length [1]
MAASViperNapuatziJumpStab
Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Melee, ProjectilesFromUser
Attaque de base
Base Damage: 425–637
Chances de Touche critique: 5%
Temps d'attaque: 1.5 sec.
Temps de recharge: 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
Attaque de base
Base Damage: 425–637
Chances de Touche critique: 5%
Temps d'attaque: 1.5 sec.
Temps de recharge: 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
Attaque de base
Base Damage: 425–637
Chances de Touche critique: 5%
Temps d'attaque: 1.5 sec.
Temps de recharge: 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
Chances de Touche critique: 5%
Temps d'incantation: 1 sec.
Inflige 209.4 à 314.2 Dégâts Physiques
Tire Projectiles supplémentaires
Empoisonne les Ennemis au Toucher
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
Temps d'incantation: 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
Temps d'incantation: 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
Temps d'incantation: 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
Chances de Touche critique: 6%
Temps d'incantation: 1 sec.
Inflige 65.45 à 196.4 Dégâts de Foudre
Convertit 50% des Dégâts de Foudre en Dégâts de Chaos
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
Chances de Touche critique: 6%
Temps d'incantation: 1 sec.
Inflige 65.45 à 196.4 Dégâts de Foudre
Convertit 50% des Dégâts de Foudre en Dégâts de Chaos
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
Chances de Touche critique: 6%
Temps d'incantation: 1 sec.
Inflige 584.7 à 1754 Dégâts de Foudre
Convertit 50% des Dégâts de Foudre en Dégâts de Chaos
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
  • Morwyn, Pourfendeuse de Marmailleux
    Humanoïde
    Morwyn, the Kinslayer
    SpectreN
    Tagshuman, humanoid, red_blood, SpearWood_onhit_audio, very_slow_movement
    Vie
    250%
    Résistance
    0 0 0 0
    Damage
    250%
    Précision
    100%
    Attack Distance
    5 ~ 15
    Temps d'attaque
    1.5 Second
    Damage Spread
    ±20%
    Expérience
    250%
    Model Size
    100%
    Type
    ViperNapuatziAzmeriStandalone
    Metadata
    ViperNapuatziAzmeriStandalone
    Niveau
    68
    Vie
    19,393
    2,413
    Damage
    583
    Dégâts des sorts
    583
    Précision
    2,502
    Temps d'attaque
    1.5
    Expérience
    71,585
    Minion Life
    17,325
    Minion Damage
    2,422
    Minion Armour
    2,413
    MeleeAtAnimationSpeedBoss
    Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Melee, ProjectilesFromUser
    Attaque de base
    Base Damage: 466–699
    Chances de Touche critique: 5%
    Temps d'attaque: 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.