I made a creature (angel) into a hero. It has no melee attack animation, and the attack itself became ranged. Is there any way to attach its sword strike animation or spell cast animation?
so you gave it an animation set — it casts spells fine, but on ranged attack it stands in a T-pose
you need to find its animset; if it's an angel, not an archangel/seraph, the animset is in _(AnimSet)\Creatures\Haven\Angel-adv.(AnimSet).xdb
open the animset and you'll see the animations recorded in it
Angel-adv.(AnimSet).xdb
<?xml version="1.0" encoding="UTF-8"?><AnimSet ObjectRecordID="169">
<animations>
<Item>
<Kind>death</Kind>
<Anim href="/_(BasicSkelAnim)/Creatures/Haven/Angel/death.(BasicSkelAnim).xdb#xpointer(/BasicSkelAnim)"/>
</Item>
<Item>
<Kind>hit</Kind>
<Anim href="/_(BasicSkelAnim)/Creatures/Haven/Angel/hit.(BasicSkelAnim).xdb#xpointer(/BasicSkelAnim)"/>
</Item>
<Item>
<Kind>idle00</Kind>
<Anim href="/_(BasicSkelAnim)/Creatures/Haven/Angel/idle00.(BasicSkelAnim).xdb#xpointer(/BasicSkelAnim)"/>
</Item>
<Item>
<Kind>move</Kind>
<Anim href="/_(BasicSkelAnim)/Creatures/Haven/Angel/move.(BasicSkelAnim).xdb#xpointer(/BasicSkelAnim)"/>
</Item>
<Item>
<Kind>attack00</Kind>
<Anim href="/_(BasicSkelAnim)/Creatures/Haven/Angel/attack00.(BasicSkelAnim).xdb#xpointer(/BasicSkelAnim)"/>
</Item>
<Item>
<Kind>attack01</Kind>
<Anim href="/_(BasicSkelAnim)/Creatures/Haven/Angel/attack01.(BasicSkelAnim).xdb#xpointer(/BasicSkelAnim)"/>
</Item>
<Item>
<Kind>stir00</Kind>
<Anim href="/_(BasicSkelAnim)/Creatures/Haven/Angel/stir00.(BasicSkelAnim).xdb#xpointer(/BasicSkelAnim)"/>
</Item>
<Item>
<Kind>happy</Kind>
<Anim href="/_(BasicSkelAnim)/Creatures/Haven/Angel/happy.(BasicSkelAnim).xdb#xpointer(/BasicSkelAnim)"/>
</Item>
</animations>
<ExpSrcScene href="/models/Creatures/Castle/Angel.mb"/>
<ExpSrcClipFolder href="/Animations/Creatures/Angel/Clip/"/>
<ExpRootTransform>Global</ExpRootTransform>
</AnimSet>
you need to add a rangeattack entry; if the angel will be both a unit and a hero, it's better to add it — copy an attack or any other animation and rename it; you can copy from the archangel, should work
Angel-adv.(AnimSet).xdb
<?xml version="1.0" encoding="UTF-8"?><AnimSet ObjectRecordID="169">
<animations>
<Item>
<Kind>death</Kind>
<Anim href="/_(BasicSkelAnim)/Creatures/Haven/Angel/death.(BasicSkelAnim).xdb#xpointer(/BasicSkelAnim)"/>
</Item>
<Item>
<Kind>hit</Kind>
<Anim href="/_(BasicSkelAnim)/Creatures/Haven/Angel/hit.(BasicSkelAnim).xdb#xpointer(/BasicSkelAnim)"/>
</Item>
<Item>
<Kind>idle00</Kind>
<Anim href="/_(BasicSkelAnim)/Creatures/Haven/Angel/idle00.(BasicSkelAnim).xdb#xpointer(/BasicSkelAnim)"/>
</Item>
<Item>
<Kind>move</Kind>
<Anim href="/_(BasicSkelAnim)/Creatures/Haven/Angel/move.(BasicSkelAnim).xdb#xpointer(/BasicSkelAnim)"/>
</Item>
<Item>
<Kind>attack00</Kind> regular animation
<Anim href="/_(BasicSkelAnim)/Creatures/Haven/Angel/attack00.(BasicSkelAnim).xdb#xpointer(/BasicSkelAnim)"/>
</Item>
<Item>
<Kind>rangeattack</Kind> added
<Anim href="/_(BasicSkelAnim)/Creatures/Haven/Angel/attack00.(BasicSkelAnim).xdb#xpointer(/BasicSkelAnim)"/>
</Item>
<Item>
<Kind>attack01</Kind>
<Anim href="/_(BasicSkelAnim)/Creatures/Haven/Angel/attack01.(BasicSkelAnim).xdb#xpointer(/BasicSkelAnim)"/>
</Item>
<Item>
<Kind>stir00</Kind>
<Anim href="/_(BasicSkelAnim)/Creatures/Haven/Angel/stir00.(BasicSkelAnim).xdb#xpointer(/BasicSkelAnim)"/>
</Item>
<Item>
<Kind>happy</Kind>
<Anim href="/_(BasicSkelAnim)/Creatures/Haven/Angel/happy.(BasicSkelAnim).xdb#xpointer(/BasicSkelAnim)"/>
</Item>
</animations>
<ExpSrcScene href="/models/Creatures/Castle/Angel.mb"/>
<ExpSrcClipFolder href="/Animations/Creatures/Angel/Clip/"/>
<ExpRootTransform>Global</ExpRootTransform>
</AnimSet>
by the same principle you can add cast baff specability