{ id = "ability.visage.familiar" name = "#DOTA_Import_Visage_Familiar" desc = "#DOTA_Import_Visage_Familiar_Desc" template_group = "#DOTA_Workshop_SubmissionType_Ability" template_subgroup = "#npc_dota_hero_visage" directory = "visage" game_unit = "npc_dota_visage_familiar1" workshop_tags = [ "Ability", "npc_dota_visage_familiar", "Visage Familiar" ] models = [ { id = "model_visage_familiar" name = "#DOTA_Import_Visage_Familiar" preview_desc = "#DOTA_Workshop_Preview_Desc_Visage_Familiar_Item" auto_hitbox_set_name = "default" default_portrait_model = "models/heroes/visage/visage_familiar.vmdl" lod_list = [ { id = "mesh_portrait" name = "#DOTA_Workshop_LOD0Title" desc = "#DOTA_Workshop_LOD0Desc" max_polygons = 4000 optional = true }, { id = "mesh_world" name = "#DOTA_Workshop_LOD1Title" desc = "#DOTA_Workshop_Visage_Familiar_Mesh_Lod1_Desc" max_polygons = 2000 }, ] material_list = [ { id = "material_familiar_1" name = "#DOTA_Import_Mat0Title_Generic" desc = "#DOTA_Import_Mat0Desc_Generic" template_vmat = "materials/models/heroes/visage/visage_familiar_color.vmat" max_tex_width = 512 max_tex_height = 512 material_group_name = "0" material_name_suffix = "_mat0" }, ] anim_list = [ { id = "animation_spawn" name = "#DOTA_Workshop_Animation_Spawn" suffix = "_anim_spawn" sequence_name = "spawn" activity_name = "ACT_DOTA_SPAWN" default = "scripts/workshop_import_templates/default_content/visage/familiars/familiar_spawn.dmx" always_use_default_anim = true }, { id = "animation_attack" name = "#DOTA_Workshop_Animation_Attack" desc = "#DOTA_Workshop_Animation_Visage_Familiar_Attack_Desc" suffix = "_anim_attack" sequence_name = "attack" activity_name = "ACT_DOTA_ATTACK" anim_length = 1 default = "scripts/workshop_import_templates/default_content/visage/familiars/familiar_attack.dmx" always_use_default_anim = true }, { id = "animation_die" name = "#DOTA_Workshop_Animation_Die" suffix = "_anim_die" sequence_name = "die" activity_name = "ACT_DOTA_DIE" default = "scripts/workshop_import_templates/default_content/visage/familiars/familiar_death.dmx" always_use_default_anim = true }, { id = "animation_disabled" name = "#DOTA_Workshop_Animation_Disabled" suffix = "_anim_disabled" sequence_name = "disabled" activity_name = "ACT_DOTA_DISABLED" default = "scripts/workshop_import_templates/default_content/visage/familiars/familiar_stun.dmx" always_use_default_anim = true }, { id = "animation_flail" name = "#DOTA_Workshop_Animation_Flail" desc = "#DOTA_Workshop_Animation_Flail_Desc" suffix = "_anim_flail" sequence_name = "flail" activity_name = "ACT_DOTA_FLAIL" default = "scripts/workshop_import_templates/default_content/visage/familiars/familiar_flail.dmx" always_use_default_anim = true }, { id = "animation_cast" name = "#DOTA_Workshop_Animation_Cast" desc = "#DOTA_Workshop_Animation_Cast_Desc" suffix = "_anim_cast" sequence_name = "cast" activity_name = "ACT_DOTA_CAST_ABILITY_1" default = "scripts/workshop_import_templates/default_content/visage/familiars/familiar_cast.dmx" always_use_default_anim = true }, { id = "animation_portrait" name = "#DOTA_Workshop_Animation_PortraitIdle" desc = "#DOTA_Workshop_Animation_PortraitIdle_Desc" suffix = "_portrait_idle" sequence_name = "portrait_idle" activity_name = "ACT_DOTA_CAPTURE" default = "scripts/workshop_import_templates/default_content/visage/familiars/familiar_capture.dmx" always_use_default_anim = true }, ] anim_bundle_list = [ { id = "idle_anims" name = "#DOTA_Workshop_Animation_Idle" bundle_type = "loop_and_rare" anim_list = [ { id = "passive_anim_loop" name = "#DOTA_Workshop_Animation_Idle" desc = "#DOTA_Workshop_Animation_Idle_Desc" suffix = "_anim_idle" sequence_name = "idle" activity_name = "ACT_DOTA_IDLE" looping = true default = "scripts/workshop_import_templates/default_content/visage/familiars/familiar_idle.dmx" always_use_default_anim = true }, ] }, { id = "run_anims" name = "#DOTA_Workshop_Animation_Run" bundle_type = "run_anim_bundle" compound_sequence_name = "turns" anim_list = [ { id = "run_anim_base" name = "#DOTA_Workshop_Animation_Run" suffix = "_run" sequence_name = "run" activity_name = "ACT_DOTA_RUN" looping = true default = "scripts/workshop_import_templates/default_content/visage/familiars/familiar_run.dmx" always_use_default_anim = true }, { id = "run_anim_turnpose_center" name = "#DOTA_Workshop_Animation_TurnPoseCenter" desc = "#DOTA_Workshop_Animation_TurnPoseCenter_Desc" suffix = "_turn_center" sequence_name = "turn_center" default = "scripts/workshop_import_templates/default_content/visage/familiars/familiar_turn_center.dmx" always_use_default_anim = true }, { id = "run_anim_turnpose_left" name = "#DOTA_Workshop_Animation_TurnPoseLeft" desc = "#DOTA_Workshop_Animation_TurnPoseLeft_Desc" suffix = "_turn_left" sequence_name = "turn_left" default = "scripts/workshop_import_templates/default_content/visage/familiars/familiar_turn_left.dmx" always_use_default_anim = true }, { id = "run_anim_turnpose_right" name = "#DOTA_Workshop_Animation_TurnPoseRight" desc = "#DOTA_Workshop_Animation_TurnPoseRight_Desc" suffix = "_turn_right" sequence_name = "turn_right" default = "scripts/workshop_import_templates/default_content/visage/familiars/familiar_turn_right.dmx" always_use_default_anim = true }, ] }, ] attach_list = [ { id = "attachment_hitlocation" name = "#DOTA_Workshop_Attachment_HitLocation" desc = "#DOTA_Workshop_Attachment_HitLocation_Autofill_Desc" attach_name = "attach_hitloc" attach_joint = "spine1_1" }, { id = "attachment_attack1" name = "#DOTA_Workshop_Attachment_AttackPoint" desc = "#DOTA_Workshop_Attachment_AttackPoint_Autofill_Desc" attach_name = "attach_attack1" attach_joint = "head" }, { id = "attach_eyeL" name = "#DOTA_Workshop_Attachment_LeftEye" desc = "#DOTA_Workshop_Attachment_Eye_Autofill_Desc" attach_name = "attach_eyeL" attach_joint = "head" default_offset = [ 5.0, 5.0, 0.0 ] default_rotation = [ 0.0, 0.0, 0.0 ] }, { id = "attach_eyeR" name = "#DOTA_Workshop_Attachment_RightEye" desc = "#DOTA_Workshop_Attachment_Eye_Autofill_Desc" attach_name = "attach_eyeR" attach_joint = "head" default_offset = [ 5.0, -5.0, 0.0 ] default_rotation = [ 0.0, 0.0, -180.0 ] }, ] hitbox_list = [ { set_name = "select_low" box_name = "root" bone_name = "root" min_bounds = [ -78.5797, -49.8457, -65.701 ] max_bounds = [ 59.9273, 49.8457, 48.7588 ] }, { set_name = "select_high" box_name = "upper" bone_name = "root" min_bounds = [ -29.7697, -31.6667, -40.9581 ] max_bounds = [ 41.42, 25.317, 34.1431 ] }, { set_name = "select_high" box_name = "lower" bone_name = "root" min_bounds = [ -26.8458, -21.6506, -349.372 ] max_bounds = [ 20.1299, 21.6506, -21.2759 ] }, { set_name = "head" box_name = "head" bone_name = "head" min_bounds = [ -29.4315, -19.9205, -16.9727 ] max_bounds = [ 19.8619, 19.9205, 23.9754 ] }, { set_name = "hands" box_name = "wrist_R" bone_name = "wrist_R" min_bounds = [ -75.5544, -14.8084, -15.1334 ] max_bounds = [ 2.35405, 5.80998, 22.6665 ] }, { set_name = "hands" box_name = "wrist_L" bone_name = "wrist_L" min_bounds = [ -2.35405, -5.80998, -22.6665 ] max_bounds = [ 75.5544, 14.8084, 15.1334 ] }, { set_name = "feet" box_name = "ankle_R" bone_name = "ankle_R" min_bounds = [ -28.4876, -4.60219, -12.6207 ] max_bounds = [ 8.89565, 6.63095, 7.86797 ] }, { set_name = "feet" box_name = "ankle_L" bone_name = "ankle_L" min_bounds = [ -8.89565, -6.63108, -7.86797 ] max_bounds = [ 28.4844, 4.60218, 12.6218 ] }, ] }, ] item_defs = [ { hero_name = "npc_dota_hero_visage" loadout_slot = "summon" prefab_type = "wearable" localization_prefix = "VISAGE_" localization_suffix = "_FAMILIAR" item_type_name = "Visage Familiar" has_portrait = true visuals = [ { type = "entity_model" asset_expr = "npc_dota_visage_familiar" modifier_expr = "$(model_visage_familiar:vmdl_name)" }, ] } ] }