Uff been a while since I crawled trough that stuff I try to share my rusty knowledge.
- You can have different weapons and swap them-> different limbs specified in the editor but only hold one sword, bj weapon at the time - not sure if if you can have like 3rd melee weapon.
I can't find the map where I created/used the new Actor Tags for my weapon then I could tell much more as I roughly understood at that point how to use them.
The motion Tags (framework) is hardcoded see this list (dunno if all are implemented)
Code:
// Sword Ready
{
kDMC_PlayerArm, // controller id
kTrans_Immediate,
{ kPSS_Ready, kPSS_SwingMediumLeft, kPSS_Ready, kPSS_End }, // connecting skills
{ 0 // maneuver skill data
},
"PlyrSword 0",
NULL, // schema name
0, // time to max
0, // mouse speed
0, // mouse zone
0, // slewSpeedScale
0, // rotateSpeedScale
TRUE, // IsIdleMotion
},
// Sword Block
{
kDMC_PlayerArm, // controller id
kTrans_Immediate,
{ kPSS_AtBlock, kPSS_SwingMediumLeft, kPSS_Ready, kPSS_End }, // connecting skills
{ 0 // maneuver skill data
},
"PlyrSword 3",
NULL, // schema name
0, // time to max
},
// Sword At Block
{
kDMC_PlayerArm, // controller id
kTrans_Immediate,
{ kPSS_Ready, kPSS_SwingMediumLeft, kPSS_Ready, kPSS_End }, // connecting skills
{ 0 // maneuver skill data
},
NULL,
NULL, // schema name
0, // time to max
},
// Sword Directed block
{
kDMC_PlayerArm, // controller id
kTrans_Immediate,
{ kPSS_Ready, kPSS_Ready, kPSS_Ready, kPSS_Ready }, // connecting skills
{ 0 // maneuver skill data
},
"PlyrSword 6",
NULL, // schema name
0, // time to max
},
// Sword Windup Short
{
kDMC_PlayerArm, // controller id
kTrans_Immediate,
{ kPSS_AtWoundShort, kPSS_SwingMediumLeft, kPSS_SwingShort, kPSS_End }, // connecting skills
{ 0 // maneuver skill data
},
"PlyrSword 1, PlyrSwordSwing 0",
NULL, // schema name
0, // time to max
},
// Sword At Wound Short
{
kDMC_PlayerArm, // controller id
kTrans_Immediate,
{ kPSS_Ready, kPSS_SwingMediumLeft, kPSS_SwingShort, kPSS_End }, // connecting skills
{ 0 // maneuver skill data
},
NULL,
NULL, // schema name
0, // time to max
},
// Sword Swing Short
{
kDMC_PlayerArm, // controller id
kTrans_AtEnd,
{ kPSS_Ready, kPSS_SwingMediumLeft, kPSS_Ready, kPSS_End }, // connecting skills
{ 0 // maneuver skill data
},
"PlyrSword 2, PlyrSwordSwing 0",
"sword_swing_S", // schema name
0, // time to max
},
// Sword Windup Medium Left
{
kDMC_PlayerArm, // controller id
kTrans_Immediate,
{ kPSS_AtWoundMediumLeft, kPSS_SwingMediumLeft, kPSS_SwingMediumLeft, kPSS_End }, // connecting skills
{ 0 // maneuver skill data
},
"PlyrSword 1, PlyrSwordSwing 1, Direction 1",
NULL, // schema name
0, // time to max
},
// Sword At Wound Medium Left
{
kDMC_PlayerArm, // controller id
kTrans_Immediate,
{ kPSS_Ready, kPSS_SwingMediumLeft, kPSS_SwingMediumLeft, kPSS_End }, // connecting skills
{ 0 // maneuver skill data
},
NULL,
NULL, // schema name
0, // time to max
},
// Sword Swing Medium Left
{
kDMC_PlayerArm, // controller id
kTrans_AtEnd,
{ kPSS_Ready, kPSS_SwingMediumLeft, kPSS_Ready, kPSS_End }, // connecting skills
{ 0 // maneuver skill data
},
"PlyrSword 2, PlyrSwordSwing 1, Direction 1",
"sword_swing_M", // schema name
0, // time to max
},
// Sword Windup Medium Right
{
kDMC_PlayerArm, // controller id
kTrans_Immediate,
{ kPSS_AtWoundMediumRight, kPSS_SwingMediumRight, kPSS_SwingMediumRight, kPSS_End }, // connecting skills
{ 0 // maneuver skill data
},
"PlyrSword 1, PlyrSwordSwing 1, Direction 2",
NULL, // schema name
0, // time to max
},
// Sword At Wound Medium Right
{
kDMC_PlayerArm, // controller id
kTrans_Immediate,
{ kPSS_Ready, kPSS_SwingMediumRight, kPSS_SwingMediumRight, kPSS_End }, // connecting skills
{ 0 // maneuver skill data
},
NULL,
NULL, // schema name
0, // time to max
},
// Sword Swing Medium Right
{
kDMC_PlayerArm, // controller id
kTrans_AtEnd,
{ kPSS_Ready, kPSS_SwingMediumRight, kPSS_Ready, kPSS_End }, // connecting skills
{ 0 // maneuver skill data
},
"PlyrSword 2, PlyrSwordSwing 1, Direction 2",
"sword_swing_M", // schema name
0, // time to max
},
// Sword Windup Long Left
{
kDMC_PlayerArm, // controller id
kTrans_Immediate,
{ kPSS_AtWoundLongLeft, kPSS_SwingLongLeft, kPSS_SwingLongLeft, kPSS_End }, // connecting skills
{ 0 // maneuver skill data
},
"PlyrSword 1, PlyrSwordSwing 2",
NULL, // schema name
0, // time to max
},
// Sword At Wound Long Left
{
kDMC_PlayerArm, // controller id
kTrans_Immediate,
{ kPSS_Ready, kPSS_SwingLongLeft, kPSS_SwingLongLeft, kPSS_End }, // connecting skills
{ 0 // maneuver skill data
},
NULL,
NULL, // schema name
0, // time to max
},
// Sword Swing Long Left
{
kDMC_PlayerArm, // controller id
kTrans_AtEnd,
{ kPSS_Ready, kPSS_SwingLongLeft, kPSS_Ready, kPSS_End }, // connecting skills
{ 0 // maneuver skill data
},
"PlyrSword 2, PlyrSwordSwing 2",
"sword_swing_L", // schema name
0, // time to max
},
// Sword Windup Long Right
{
kDMC_PlayerArm, // controller id
kTrans_Immediate,
{ kPSS_AtWoundLongRight, kPSS_SwingLongRight, kPSS_SwingLongRight, kPSS_End }, // connecting skills
{ 0 // maneuver skill data
},
"PlyrSword 1, PlyrSwordSwing 2",
NULL, // schema name
0, // time to max
},
// Sword At Wound Long Right
{
kDMC_PlayerArm, // controller id
kTrans_Immediate,
{ kPSS_Ready, kPSS_SwingLongRight, kPSS_SwingLongRight, kPSS_End }, // connecting skills
{ 0 // maneuver skill data
},
NULL,
NULL, // schema name
0, // time to max
},
// Sword Swing Long Right
{
kDMC_PlayerArm, // controller id
kTrans_AtEnd,
{ kPSS_Ready, kPSS_SwingLongRight, kPSS_Ready, kPSS_End }, // connecting skills
{ 0 // maneuver skill data
},
"PlyrSword 2, PlyrSwordSwing 2",
"sword_swing_L", // schema name
0, // time to max
},
// Sword Begin
{
kDMC_PlayerArm, // controller id
kTrans_Immediate,
{ kPSS_Ready, kPSS_SwingMediumLeft, kPSS_Ready, kPSS_End }, // connecting skills
{ 0 // maneuver skill data
},
"PlyrSword 4",
"sword_begin", // schema name
},
// Sword End
{
kDMC_PlayerArm, // controller id
kTrans_Immediate,
{ kSkillInvalid, kSkillInvalid, kSkillInvalid, kSkillInvalid}, // connecting skills
{ 0 // maneuver skill data
},
"PlyrSword 5",
"sword_end", // schema name
},
};
But how these schemas/Tags are finally translated into motions is not hardcoded as this is done via the motionDB!
so when Direction 6, PlyrSword 6 is called motion camSynch motion GBLO is executed.
Now when using Motions->Actor Tag List the added keyword is used as an additional "archetype" schema (Please correct me if I'm wrong without my testing map this is my explanation)
The motions defined in schema MyMotion 0 Direction 6, PlyrSword 6.
Therefore when building your ModDB you can use in your .mos file the keyword global MyMotion 0 and build the motions for your motion as you like.
Now back in the Editor with Motions->Actor Tag List = MyMotion 0 you bind these motions to your current weapon.
So from my point of view you can have many weapons with many different motions but for every weapon you need a custom motion file.