/***********************************************************************

	monster_demon_archvile.def

***********************************************************************/

export James {
 	options -prefix ARCH_ -keep Lknee Rknee -keep ROT -keep fireball -align movement -parent Waist ROT -parent ROT Body -parent fireball Rhand -sourcedir models/monsters/archvile/cycles -destdir models/md5/monsters/archvile


	mesh	archvile_mesh.mb -dest archvile
	anim	idle.mb
	anim	stand.mb
	anim	teleport.mb
	anim	walk.mb
	anim	attack1.mb
	anim	attack2.mb
	anim	attack3.mb
	anim	range_attack1.mb
	anim	range_attack2.mb
	anim	evade_left.mb
	anim	evade_right.mb
	anim	pain_evade_left.mb
	anim	pain_evade_right.mb
	anim	pain_chest1.mb
	anim	pain_chest2.mb
	anim	pain_head1.mb
	anim	pain_head2.mb
	anim	pain_luparm1.mb
	anim	pain_luparm2.mb
	anim	pain_ruparm1.mb
	anim	pain_ruparm2.mb
	anim	sight2.mb
	anim	resurrection.mb
	anim	af_pose.mb -range 1 1
}

model monster_demon_archvile {
	mesh							models/md5/monsters/archvile/archvile.md5mesh
	channel torso					( *Waist )
	channel legs					( *Hips origin Body ROT )

	anim idle						models/md5/monsters/archvile/idle.md5anim
	anim stand						models/md5/monsters/archvile/stand.md5anim
	anim walk						models/md5/monsters/archvile/walk.md5anim {
		frame 14						sound_body snd_footstep
		frame 27						sound_body snd_footstep
	}
	anim teleport					models/md5/monsters/archvile/teleport.md5anim {
		frame 4							sound_body snd_footstep
		frame 5							sound_body snd_footstep
		frame 15						sound_voice snd_sight
	}
	anim turret_attack				models/md5/monsters/archvile/range_attack2.md5anim {
		frame 6							sound_voice snd_sight2
		frame 10						object_call incinerate
	}
	anim melee_attack1				models/md5/monsters/archvile/attack1.md5anim {
		frame 9							sound_body snd_melee
		frame 11						sound_body snd_footstep
		frame 12						melee melee_archRightClaw
		frame 30						sound_body snd_footstep
	}
	anim melee_attack2				models/md5/monsters/archvile/attack2.md5anim {
		frame 7							sound_body snd_footstep
		frame 9							sound_body snd_melee
		frame 13						melee melee_archLeftClaw
		frame 31						sound_body snd_footstep
	}
	anim melee_attack3				models/md5/monsters/archvile/attack3.md5anim {
		frame 8							sound_body snd_melee
		frame 11						melee melee_archRightClaw
		frame 13						sound_body snd_footstep
		frame 31						sound_body snd_footstep
	}
	// duplicated attack2 so we have an even # of left/right attacks
	anim melee_attack4				models/md5/monsters/archvile/attack2.md5anim {
		frame 7							sound_body snd_footstep
		frame 9							sound_body snd_melee
		frame 13						melee melee_archLeftClaw
		frame 31						sound_body snd_footstep
	}
	anim evade_left					models/md5/monsters/archvile/evade_left.md5anim {
		frame 1							sound_voice snd_pain
		frame 5							sound_body snd_footstep
		frame 12						sound_body snd_footstep
		frame 17						sound_body snd_footstep
	}
	anim evade_right				models/md5/monsters/archvile/evade_right.md5anim {
		frame 1							sound_voice snd_pain		
		frame 6							sound_body snd_footstep
		frame 11						sound_body snd_footstep
		frame 17						sound_body snd_footstep
	}
	anim flamewall_attack			models/md5/monsters/archvile/range_attack1.md5anim {
		frame 7							sound_body snd_attack
		frame 8							object_call flame_wall
	}
	anim incinerate_attack			models/md5/monsters/archvile/range_attack2.md5anim {
		frame 5							sound_voice snd_sight2
		frame 7							sound_body snd_attack
		frame 10						object_call incinerate
	}
	anim pain 						models/md5/monsters/archvile/pain_chest1.md5anim {
		frame 1							sound_voice snd_pain
	}
	anim pain_chest1				models/md5/monsters/archvile/pain_chest1.md5anim {
		frame 1							sound_voice snd_pain
	}
	anim pain_chest2				models/md5/monsters/archvile/pain_chest2.md5anim {
		frame 1							sound_voice snd_pain
	}
	anim pain_head1					models/md5/monsters/archvile/pain_head1.md5anim {
		frame 1							sound_voice snd_pain
	}
	anim pain_head2					models/md5/monsters/archvile/pain_head2.md5anim {
		frame 1							sound_voice snd_pain
	}
	anim pain_left_arm1				models/md5/monsters/archvile/pain_luparm1.md5anim {
		frame 1							sound_voice snd_pain
	}
	anim pain_left_arm2				models/md5/monsters/archvile/pain_luparm2.md5anim {
		frame 1							sound_voice snd_pain
	}
	anim pain_right_arm1			models/md5/monsters/archvile/pain_ruparm1.md5anim {
		frame 1							sound_voice snd_pain
	}
	anim pain_right_arm2			models/md5/monsters/archvile/pain_ruparm2.md5anim {
		frame 1							sound_voice snd_pain
	}
	anim sight						models/md5/monsters/archvile/sight2.md5anim {
		frame 1							sound_voice snd_sight
	}
	anim af_pose					models/md5/monsters/archvile/af_pose.md5anim
		
	anim ik_pose					models/md5/monsters/archvile/af_pose.md5anim
	anim resurrection				models/md5/monsters/archvile/resurrection.md5anim {
		frame 1							sound_body snd_resurrection
		frame 9							sound_voice snd_sight
		frame 10						object_call resurrection
	}
}

entityDef monster_demon_archvile {
	"inherit"						"monster_default"
	"editor_usage"					"Target 1 or more monsters to act as minions.  Minions will remain hidden until they are spawned in by the archvile."
	"editor_var keep_alive"			"Specifies the number of minions the archvile should keep spawned."
	"editor_var num_start"			"Specifies the number of minions the archvile should initially spawn."
	"editor_var target"				"Set to name of monster entity to act as a minion.  Archvile can have any # of targeted minion.  A minion will remain hidden until he is spawned in by the archvile."
	"editor_var delay"				"How long to wait after minion dies to respawn a new one."
	"scriptobject"					"ai"
	"nativeobject"					"rvmMonsterDemonArchvile"
	"model"							"monster_demon_archvile"
	"ragdoll"						"monster_demon_archvile"
	"size"							"48 48 68"
	"use_aas"						"aas48"
	"team"							"1"
	"rank"							"2"
	"health"						"425"
	"attack_cone"					"70"
	"attack_accuracy"				"0"
	"melee_range"					"48"
	"bone_focus"					"Head"
	"burnaway"						"0.50"
	"smoke_burnParticleSystem"			"burn_imp.prt-chest"
	"delay"							"2"
	
	"look_min"						"-90 -125 0"
	"look_max"						"25 125 0"
	"look_joint Waist"				"0.4 0.4 0"
	"look_joint Head"				"0.6 0.6 0"
	
	"damage_zone head"				"*Neck"
	"damage_zone chest"				"*Waist -*Rshldr -*Lshldr -*Neck"
	"damage_zone left_arm"			"*Lshldr"
	"damage_zone right_arm"			"*Rshldr"
	"damage_scale head"				"2"
	"mass"   						"350"

	"ik_numLegs"					"2"
	"ik_footSize"					"4"
	"ik_waist"						"Body"
	"ik_hip1"						"Lupleg"
	"ik_hip2"						"Rupleg"
	"ik_knee1"						"Lloleg"
	"ik_knee2"						"Rloleg"
	"ik_ankle1"						"Lankle_r"
	"ik_ankle2"						"Rankle_r"
	"ik_dir1"						"Lknee"
	"ik_dir2"						"Rknee"
	"ik_foot1"						"Ltoe_r"
	"ik_foot2"						"Rtoe_r"

	"snd_sight"						"monster_demon_archvile_sight"
	"snd_sight2"					"monster_demon_archvile_sight2"
	"snd_chatter"					"monster_demon_archvile_chatter"
	"snd_chatter_combat"			"monster_demon_archvile_chatter"
	"snd_pain"						"monster_demon_archvile_pain"
	"snd_attack"					"monster_demon_archvile_attack"
	"snd_death"						"monster_demon_archvile_die"
	"snd_createmissile"				"monster_demon_imp_fireball_create"
	"snd_footstep"					"monster_demon_archvile_footstep"
	"snd_resurrection"				"monster_demon_archvile_resurrection"
	"snd_melee"					"monster_demon_archvile_melee"
	"snd_burn"						"monster_demon_archvile_burn"

	"smokeParticleSystem"			"rarchhand"
	"smokeParticleSystem2"			"larchhand"

	// these keys aren't actually used, but just for the game to precache the entitydefs	
	"def_attack1"					"archvile_incinerate"
	"def_attack2"					"archvile_flamewall_2.prt"
}

entityDef melee_archLeftClaw {
	// melee specific parameters
	"snd_hit"					"monster_demon_imp_melee_hit"
	"snd_miss"					"monster_demon_imp_melee_miss"
	"kickDir"					"0 -1 0"


	// damage parameters
	"damage"					"12"

	"mtr_blob"					"leftSlash"
	"blob_time"					"300"
	"blob_x"					"140"
	"blob_y"					"-100"
	"blob_width"				"600"
	"blob_height"				"600"

	"knockback"					"40"

	"kick_time"					"400"
	"kick_amplitude"			"2"

	"dv_time"					"100"
}

entityDef melee_archRightClaw {
	"snd_hit"					"monster_demon_imp_melee_hit"
	"snd_miss"					"monster_demon_imp_melee_miss"
	"kickDir"					"0 1 0"

	"damage"					"12"

	"mtr_blob"					"rightSlash"
	"blob_time"					"300"
	"blob_x"					"-100"
	"blob_y"					"-100"
	"blob_width"				"600"
	"blob_height"				"600"

	"knockback"					"30"

	"kick_time"					"400"
	"kick_amplitude"			"2"

	"dv_time"					"100"
}

entityDef damage_archvilefirewall {
	"damage"			"20"
	"kickDir"			"1 0 0"

	"mtr_blob"			"genericDamage"
	"blob_time"			"300"
	"blob_size"			"400"
	"blob_offset_x"		"400"

	"knockback"			"10"

	"smoke_wound_flesh"	"bloodwound.smoke"

	"kick_time"			"400"
	"kick_amplitude"	"1"

	"dv_time"			"100"
}

entityDef archvile_flamewall {
	"spawnclass"				"idTrigger_Hurt"
	"model"						"archvile_flamewall.prt"
	"size"						"48 48 128"
	"cylinder"					"6"
	"def_damage"				"damage_archvilefirewall"
	"snd_fly"					"archvile_fireloop"					
}

entityDef damage_archvileincinerate {
	"damage"			"20"
	"kickDir"			"1 0 0"

	"mtr_blob"			"genericDamage"
	"blob_time"			"300"
	"blob_size"			"400"
	"blob_offset_x"		"400"

	"knockback"			"10"

	"smoke_wound_flesh"	"bloodwound.smoke"

	"kick_time"			"400"
	"kick_amplitude"	"1"

	"dv_time"			"100"
}

entityDef archvile_incinerate {
	"spawnclass"				"idTrigger_Hurt"
	"model"						"archvile_flamewall_2b.prt"
	"size"						"48 48 128"
	"cylinder"					"6"
	"def_damage"				"damage_archvileincinerate"
}
