// ================================================================ // // Generic Animation Macros // // ================================================================ $definemacro GenericIdle IdleName IdleSeq IdleAct \\ $sequence $IdleName$ { $IdleSeq$ activity $IdleAct$ 1 loop \\ cmdlist lockfeetandlefthand \\ } \\ $continue $IdleName$ $definemacro GenericIdleWeight IdleName IdleSeq IdleAct ActWeight \\ $sequence $IdleName$ { $IdleSeq$ activity $IdleAct$ $ActWeight$ loop \\ cmdlist lockfeetandlefthand \\ } \\ $continue $IdleName$ $definemacro GenericIdleHands IdleName IdleSeq IdleAct HandsLayer \\ $sequence $IdleName$ { $IdleSeq$ activity $IdleAct$ 1 loop \\ cmdlist lockfeet \\ blendlayer $HandsLayer$ 0 0 0 0 local \\ } \\ $continue $IdleName$ $definemacro GenericCombatIdle IdleName IdleSeq IdleAct AimLayer \\ $sequence $IdleName$ { \\ $IdleSeq$ \\ activity $IdleAct$ 1 \\ addlayer $AimLayer$ \\ loop \\ cmdlist lockfeetandlefthand \\ } \\ $continue $IdleName$ $definemacro GenericCombatIdle_NoHandIK IdleName IdleSeq IdleAct AimLayer \\ $sequence $IdleName$ { \\ $IdleSeq$ \\ activity $IdleAct$ 1 \\ addlayer $AimLayer$ \\ loop \\ cmdlist lockfeet \\ } \\ $continue $IdleName$ $definemacro GenericShoot SeqName FileName ActName AimLayer \\ $sequence $SeqName$ { \\ $FileName$ \\ { event 3014 0 "" } \\ // { event 3014 1 "" }? addlayer $AimLayer$ \\ activity $ActName$ 1 \\ cmdlist lockfeetandlefthand \\ } \\ $continue $SeqName$ $definemacro GenericReload SeqName FileName ActName AimLayer AimFadeOut AimFadeIn NumFrames EventFrame \\ $sequence $SeqName$ { \\ $FileName$ \\ { event 3017 0 "" } \\ { event 3018 $EventFrame$ "" } \\ blendlayer $AimLayer$ 0 0 0 $AimFadeOut$ spline \\ blendlayer $AimLayer$ $AimFadeIn$ $NumFrames$ $NumFrames$ $NumFrames$ spline \\ activity $ActName$ 1 \\ cmdlist lockfeet \\ ikrule "rhand" release \\ ikrule "lhand" release \\ } \\ $continue $SeqName$ $definemacro GenericReloadSoundMatched SeqName FileName ActName AimLayer AimFadeOut AimFadeIn NumFrames EventFrame \\ $sequence $SeqName$ { \\ $FileName$ \\ { event 3015 $EventFrame$ "" } \\ blendlayer $AimLayer$ 0 0 0 $AimFadeOut$ spline \\ blendlayer $AimLayer$ $AimFadeIn$ $NumFrames$ $NumFrames$ $NumFrames$ spline \\ activity $ActName$ 1 \\ cmdlist lockfeet \\ ikrule "rhand" release \\ ikrule "lhand" release \\ } \\ $continue $SeqName$ $definemacro GenericReloadNoAim SeqName FileName ActName EventFrame \\ $sequence $SeqName$ { \\ $FileName$ \\ { event 3017 0 "" } \\ { event 3018 $EventFrame$ "" } \\ activity $ActName$ 1 \\ cmdlist lockfeet \\ ikrule "rhand" release \\ ikrule "lhand" release \\ } \\ $continue $SeqName$ $definemacro GenericAimMoveLayer SeqName FileName HandsLayer AimLayer \\ $sequence $SeqName$ { $FileName$ hidden addlayer $AimLayer$ loop \\ ikrule "rhand" release \\ ikrule "lhand" release \\ blendlayer $HandsLayer$ 0 0 0 0 local \\ weightlist "weights_layer_walk_ar2" \\ } \\ $continue $SeqName$ $definemacro GenericMoveLayer LayerName FileName WeightList \\ $sequence $LayerName$ { \\ $FileName$ \\ hidden \\ worldspace \\ ikrule "lhand" touch "ValveBiped.Bip01_R_Hand" \\ ikrule "rhand" release \\ weightlist $WeightList$ \\ } \\ $continue $LayerName$ // ---------------------------------------------------------------- $definemacro GenericWalkLayered SeqName ActivityName LayerName InteriorAct \\ $sequence $SeqName$ { \\ $a_WalkBlends \\ activity $ActivityName$ 1 \\ keyvalues \\ { \\ interior $InteriorAct$ \\ } \\ addlayer $LayerName$ \\ // "blendlayer $LayerName$ 0 0 0 0 local" apparently doesn't keep IK } \\ $continue $SeqName$ $definemacro GenericRunLayered SeqName ActivityName LayerName InteriorAct \\ $sequence $SeqName$ { \\ $a_RunBlends \\ activity $ActivityName$ 1 \\ keyvalues \\ { \\ interior $InteriorAct$ \\ } \\ addlayer $LayerName$ \\ // "blendlayer $LayerName$ 0 0 0 0 local" apparently doesn't keep IK } \\ $continue $SeqName$ // ---------------------------------------------------------------- $definemacro GenericShootFromIdle SeqName FileName ActName AimLayer GestureLayer NumFrames \\ $sequence $SeqName$ { \\ $FileName$ \\ numframes $NumFrames$ \\ { event 3014 1 "" } \\ blendlayer $GestureLayer$ 0 0 0 0 local \\ addlayer $AimLayer$ \\ activity $ActName$ 1 \\ cmdlist lockfeetandlefthand \\ } \\ $continue $SeqName$ $definemacro GenericShootFromIdle_NoHandIK SeqName FileName ActName AimLayer GestureLayer NumFrames \\ $sequence $SeqName$ { \\ $FileName$ \\ numframes $NumFrames$ \\ { event 3014 1 "" } \\ blendlayer $GestureLayer$ 0 0 0 0 local \\ addlayer $AimLayer$ \\ activity $ActName$ 1 \\ cmdlist lockfeet \\ } \\ $continue $SeqName$ $definemacro GenericReloadFromIdle SeqName FileName ActName AimLayer GestureLayer AimFadeOut AimFadeIn NumFrames EventFrame \\ $sequence $SeqName$legs $FileName$ weightlist "LegsAndPelvis" hidden \\ $sequence $SeqName$ { \\ $FileName$ \\ numframes $NumFrames$ \\ { event 3015 $EventFrame$ "" } \\ blendlayer $GestureLayer$ 0 0 0 0 local \\ blendlayer $AimLayer$ 0 0 0 $AimFadeOut$ spline \\ blendlayer $AimLayer$ $AimFadeIn$ $NumFrames$ $NumFrames$ $NumFrames$ spline \\ activity $ActName$ 1 \\ cmdlist lockfeet \\ ikrule "rhand" release \\ ikrule "lhand" release \\ } \\ $continue $SeqName$ $definemacro GenericReloadFromIdle_NoAim SeqName FileName ActName GestureLayer NumFrames EventFrame \\ $sequence $SeqName$legs $FileName$ weightlist "LegsAndPelvis" hidden \\ $sequence $SeqName$ { \\ $FileName$ \\ numframes $NumFrames$ \\ { event 3015 $EventFrame$ "" } \\ blendlayer $GestureLayer$ 0 0 0 0 local \\ activity $ActName$ 1 \\ cmdlist lockfeet \\ ikrule "rhand" release \\ ikrule "lhand" release \\ } \\ $continue $SeqName$ // ================================================================ $definemacro makenpcmatchrun runname filename frame aimlayer runn blendweights walkframe \\ $animation a_$runname$_base $filename$ frame $frame$ $frame$ \\ $sequence $runname$_mod $runn$ { \\ walkframe $walkframe$ LX LY rotateto 0 \\ weightlist $blendweights$ \\ worldspaceblend a_$runname$_base \\ weightlist HipsUpperbodyReplace \\ hidden \\ iklock lfoot 1 0 iklock rfoot 1 0 \\ } \\ $sequence $runname$ { \\ $a_RunBlends \\ addlayer $runname$_mod \\ addlayer $aimlayer$ \\ } \\ $continue $runname$ $definemacro makenpcmatchwalk walkname filename frame aimlayer walkn blendweights walkframe \\ $animation a_$walkname$_base $filename$ frame $frame$ $frame$ \\ $sequence $walkname$_mod $walkn$ { \\ walkframe $walkframe$ LX LY rotateto 0 \\ weightlist $blendweights$ \\ worldspaceblend a_$walkname$_base \\ weightlist HipsUpperbodyReplace \\ hidden \\ iklock lfoot 1 0 iklock rfoot 1 0 \\ } \\ $sequence $walkname$ { \\ $a_WalkBlends \\ addlayer $walkname$_mod \\ addlayer $aimlayer$ \\ } \\ $continue $walkname$ // ============================================================================================= // // Generic macros for overlaying animations. // // ============================================================================================= // // Creates a sequence using special blending techniques to make an animation fit in with the NPC's actual idle // // ============================================================================================= $definemacro MakeAdjustedAnimation SeqName TargetAnim IdleAnim InFrame OutFrame FrameNum \\ $sequence $SeqName$_layer $TargetAnim$ hidden \\ $sequence $SeqName$ $IdleAnim$ { \\ blendlayer $SeqName$_layer 0 $InFrame$ $OutFrame$ $FrameNum$ spline \\ numframes $FrameNum$ \\ fps 30 \\ fadein 0.25 \\ fadeout 0.25 \\ cmdlist lockfeet \\ } \\ $continue $SeqName$ // ============================================================================================= // // Creates a new sequence from an idle out of a subtracted delta from an existing sequence. // Useful for porting simple animations to other NPCs. // // ============================================================================================= $definemacro MakeAdjustedDelta SeqName FileName IdleAnim NumFrames FPS \\ $sequence $SeqName$_layer $FileName$ fps $FPS$ subtract $SeqName$_layer 0 delta hidden \\ $sequence $SeqName$ $IdleAnim$ { \\ numframes $NumFrames$ fps $FPS$ \\ addlayer $SeqName$_layer \\ cmdlist lockfeet \\ } \\ // Grenade throw animation. // MakeGrenadeAnimation (aim anim) "combine_soldier_anims_anims/grenThrow" 45 // MakeGrenadeAnimation (aim anim) "police_animations_anims/grenadethrow" ? $definemacro SoldierGrenadeAnimation IdleAnim \\ $MakeAdjustedDelta "grenThrow" "combine_soldier_anims_anims\grenThrow.smd" $IdleAnim$ 50 45 \\ $append grenThrow { \\ activity ACT_COMBINE_THROW_GRENADE 1 \\ { event 7 30 "" } \\ } \\ // Grenade underthrow animation. $definemacro SoldierGrenadeDropAnimation IdleAnim \\ $MakeAdjustedDelta "grenDrop" "combine_soldier_anims_anims\grenDrop.smd" $IdleAnim$ 43 35 \\ $append grenDrop { \\ activity ACT_SPECIAL_ATTACK1 1 \\ { event 7 26 "" } \\ } \\ // Grenade place animation. $definemacro SoldierGrenadePlaceAnimation IdleAnim \\ $MakeAdjustedDelta "grenPlace" "combine_soldier_anims_anims\grenPlace.smd" $IdleAnim$ 45 35 \\ $append grenPlace { \\ activity ACT_SPECIAL_ATTACK2 1 \\ { event 9 25 "" } \\ } \\ // AR2 alt-fire animation. // // MakeAltFireAnimation (aim anim) "combine_soldier_anims_anims/shootAR2alt" 36 // $append shootAR2alt // { // { event COMBINE_AE_BEGIN_ALTFIRE 0 "" } // { event COMBINE_AE_ALTFIRE 16 "" } // } // $definemacro MakeAltFireAnimation Name IdleAnim ActualAnim \\ $animation a_$Name$ $IdleAnim$ frame 0 0 \\ $sequence $Name$ $ActualAnim$ { \\ match a_$Name$ \\ ikrule rhand touch "ValveBiped.Bip01_R_Hand" usesource \\ } \\ $continue $Name // // Manhack deploy animation. // $definemacro MakeManhackDeployLayer FileName FPS \\ $sequence deploy_layer $FileName$ fps $FPS$ subtract deploy_layer 0 delta hidden \\ $definemacro MakeManhackDeployAnimation IdleAnim NumFrames FPS \\ $sequence deploy $IdleAnim$ { \\ numframes $NumFrames$ fps $FPS$ \\ activity "ACT_METROPOLICE_DEPLOY_MANHACK" 1 \\ { event AE_METROPOLICE_START_DEPLOY 10 "" } \\ { event AE_METROPOLICE_DEPLOY_MANHACK 33 "" } \\ addlayer deploy_layer \\ cmdlist lockfeet \\ } \\ $definemacro MakeManhackDeployGesture IdleAnim \\ $sequence deploy_gesture { \\ $IdleAnim$ \\ numframes 50 \\ subtract "deploy_gesture" 0 \\ delta \\ blendlayer "deploy_layer" 0 5 38 50 \\ activity "ACT_GESTURE_DEPLOY_MANHACK" 1 \\ { event AE_METROPOLICE_START_DEPLOY 10 "" } \\ { event AE_METROPOLICE_DEPLOY_MANHACK 33 "" } \\ keyvalues \\ { \\ faceposer \\ { \\ "type" "gesture" \\ "tags" \\ { \\ "start_deploy" "10" \\ "apex" "26" \\ "end_deploy" "33" \\ "end" "40" \\ } \\ "start_deploy" "apex" \\ "thumbnail_frame" "39" \\ } \\ } \\ } \\