mirror of
https://github.com/mapbase-source/mapbase-model-src.git
synced 2025-03-13 14:10:15 +03:00
358 lines
11 KiB
Plaintext
358 lines
11 KiB
Plaintext
// ================================================================
|
|
//
|
|
// 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" \\
|
|
} \\
|
|
} \\
|
|
} \\
|