/* LICENSE:
  =========================================================================
    CMPack'04 Source Code Release for OPEN-R SDK 1.1.5-r2 for ERS7
    Copyright (C) 2004 Multirobot Lab [Project Head: Manuela Veloso]
    School of Computer Science, Carnegie Mellon University
    All rights reserved.
  ========================================================================= */

#include "genmot.h"

static const ulong UNSWTimeStep = 40;

// mouth angle = -.7

void make_kicks_unsw()
{
  Motion::BodyStateMotion m[32];
  Motion::BodyState b;
  FILE *out;
  int n;
  int t;

  mzero(m,32);
  t = 1;

  //==== UNSW Chest Push (CHEST_PUSH) (state 4) ====//
  mzero(b);
  MouthAng(b,-.7);

  //{-55,0,0,22,17,80,22,17,80,-55,12,112,-55,12,112}, 0-5
  //{25,0,0,-50,17,170,-50,17,170,-5,12,62,-5,12,62},  6-11
  //{0,0,0,-12,17,110,-12,17,110,-35,12,92,-35,12,92}  12-17

  n = 0;
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng(b,RAD(-55), 0.0, 0.0);
  LegAng(b,1, RAD(  22), RAD(  17), RAD(  80));
  LegAng(b,0, RAD(  22), RAD(  17), RAD(  80));
  LegAng(b,3, RAD( -55), RAD(  12), RAD( 112));
  LegAng(b,2, RAD( -55), RAD(  12), RAD( 112));
  m[n].body = b;
  m[n].time = 6*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng(b,RAD(25), 0.0, 0.0);
  LegAng(b,1, RAD( -50), RAD(  17), RAD( 170));
  LegAng(b,0, RAD( -50), RAD(  17), RAD( 170));
  LegAng(b,3, RAD(  -5), RAD(  12), RAD(  62));
  LegAng(b,2, RAD(  -5), RAD(  12), RAD(  62));
  m[n].body = b;
  m[n].time = 6*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng(b,RAD(0), 0.0, 0.0);
  LegAng(b,1, RAD( -12), RAD(  17), RAD( 110));
  LegAng(b,0, RAD( -12), RAD(  17), RAD( 110));
  LegAng(b,3, RAD( -35), RAD(  12), RAD(  92));
  LegAng(b,2, RAD( -35), RAD(  12), RAD(  92));
  m[n].body = b;
  m[n].time = 6*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("k_unsw_4_chest.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);

  //==== UNSW Kick off (state 5) ====//
  mzero(b);
  MouthAng(b,-.7);

  //{0,0,0,-40,10,65,-40,10,65,-70,15,150,-70,15,150},  0-9
  //{-90,0,0,60,20,50,60,20,50,0,15,70,0,15,70},       10-19
  //{0,0,0,-12,17,110,-12,17,110,-35,12,92,-35,12,92}  20-29

  n = 0;
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng(b,RAD(0), 0.0, 0.0);
  LegAng(b,1, RAD( -40), RAD(  10), RAD(  65));
  LegAng(b,0, RAD( -40), RAD(  10), RAD(  65));
  LegAng(b,3, RAD( -70), RAD(  15), RAD( 150));
  LegAng(b,2, RAD( -70), RAD(  15), RAD( 150));
  m[n].body = b;
  m[n].time = 10*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng(b,RAD(-90), 0.0, 0.0);
  LegAng(b,1, RAD(  60), RAD(  20), RAD(  50));
  LegAng(b,0, RAD(  60), RAD(  20), RAD(  50));
  LegAng(b,3, RAD(   0), RAD(  15), RAD(  70));
  LegAng(b,2, RAD(   0), RAD(  15), RAD(  70));
  m[n].body = b;
  m[n].time = 10*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng(b,RAD(0), 0.0, 0.0);
  LegAng(b,1, RAD( -12), RAD(  17), RAD( 110));
  LegAng(b,0, RAD( -12), RAD(  17), RAD( 110));
  LegAng(b,3, RAD( -35), RAD(  12), RAD(  92));
  LegAng(b,2, RAD( -35), RAD(  12), RAD(  92));
  m[n].body = b;
  m[n].time = 10*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("k_unsw_5.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);

  //==== UNSW Kick off (state 6) ====//
  mzero(b);
  MouthAng(b,-.7);

  //{45,0,0,0,90,20,0,90,20,20,12,30,20,12,30},       0-9
  //{45,0,0,90,25,0,90,25,0,20,12,30,20,12,30},       10-19
  //{0,0,0,-12,17,110,-12,17,110,-35,12,92,-35,12,92} 20-29

  n = 0;
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng(b,RAD(45), 0.0, 0.0);
  LegAng(b,1, RAD(   0), RAD(  90), RAD(  20));
  LegAng(b,0, RAD(   0), RAD(  90), RAD(  20));
  LegAng(b,3, RAD(  20), RAD(  12), RAD(  30));
  LegAng(b,2, RAD(  20), RAD(  12), RAD(  30));
  m[n].body = b;
  m[n].time = 10*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  LegAng(b,1, RAD(  90), RAD(  25), RAD(   0));
  LegAng(b,0, RAD(  90), RAD(  25), RAD(   0));
  m[n].body = b;
  m[n].time = 10*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng(b,RAD(0), 0.0, 0.0);
  LegAng(b,1, RAD( -12), RAD(  17), RAD( 110));
  LegAng(b,0, RAD( -12), RAD(  17), RAD( 110));
  LegAng(b,3, RAD( -35), RAD(  12), RAD(  92));
  LegAng(b,2, RAD( -35), RAD(  12), RAD(  92));
  m[n].body = b;
  m[n].time = 10*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("k_unsw_6.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);

  //==== UNSW old kick (state 8) ====//
  mzero(b);
  MouthAng(b,-.7);

  //{-5,0,0,55,-20,20,55,-20,20,0,70,140,0,70,140}, 0-5
  //{-30,0,0,130,0,90,130,0,90,0,70,140,0,70,140},  6-17
  //{-5,0,0,55,-20,20,55,-20,20,0,70,140,0,70,140}  18-23

  n = 0;
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng(b,RAD(-5), 0.0, 0.0);
  LegAng(b,1, RAD(  55), RAD( -20), RAD(  20));
  LegAng(b,0, RAD(  55), RAD( -20), RAD(  20));
  LegAng(b,3, RAD(   0), RAD(  70), RAD( 140));
  LegAng(b,2, RAD(   0), RAD(  70), RAD( 140));
  m[n].body = b;
  m[n].time = 6*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng(b,RAD(-30), 0.0, 0.0);
  LegAng(b,1, RAD( 130), RAD(   0), RAD(  90));
  LegAng(b,0, RAD( 130), RAD(   0), RAD(  90));
  m[n].body = b;
  m[n].time = 12*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng(b,RAD(-5), 0.0, 0.0);
  LegAng(b,1, RAD(  55), RAD( -20), RAD(  20));
  LegAng(b,0, RAD(  55), RAD( -20), RAD(  20));
  m[n].body = b;
  m[n].time = 6*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("k_unsw_8.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);

  //==== UNSW grab (state 9) ====//
  mzero(b);
  MouthAng(b,-.7);

  //{-5,0,0,55,20,20,55,20,20,-20,45,55,-20,45,55} 0-5

  n = 0;
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng(b,RAD(-5), 0.0, 0.0);
  LegAng(b,1, RAD(  55), RAD(  20), RAD(  20));
  LegAng(b,0, RAD(  55), RAD(  20), RAD(  20));
  LegAng(b,3, RAD( -20), RAD(  45), RAD(  55));
  LegAng(b,2, RAD( -20), RAD(  45), RAD(  55));
  m[n].body = b;
  m[n].time = 10*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("k_unsw_9.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);

  //==== UNSW front kick (state 10) ====//
  mzero(b);
  MouthAng(b,-.7);

  ////   ht   hp   hr   rfj   rfs   rfk   lfj   lfs   lfk   rhj   rhs   rhk   lhj   lhs   lhk 
  //{    10,   0,   0,   70,  -20,   30,   70,  -20,   30, -120,   30,  150, -120,   30,  150 0-11
  //{    10,   0,   0,  115,    0,  100,  115,    0,  100, -120,   30,  150, -120,   30,  150 12-18
  //{    10,   0,   0,   65,  -20,   20,   65,  -20,   20,  -20,   15,  150,  -20,   15,  150 18-23

  n = 0;
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng(b,RAD(10), 0.0, 0.0);
  LegAng(b,1, RAD(  70), RAD( -20), RAD(  30));
  LegAng(b,0, RAD(  70), RAD( -20), RAD(  30));
  LegAng(b,3, RAD(  30), RAD(-120), RAD( 150));
  LegAng(b,2, RAD(  30), RAD(-120), RAD( 150));
  m[n].body = b;
  m[n].time = 12*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  LegAng(b,1, RAD( 115), RAD(   0), RAD( 100));
  LegAng(b,0, RAD( 115), RAD(   0), RAD( 100));
  m[n].body = b;
  m[n].time = 6*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  LegAng(b,1, RAD(  65), RAD( -20), RAD(  20));
  LegAng(b,0, RAD(  65), RAD( -20), RAD(  20));
  LegAng(b,3, RAD( -20), RAD(  15), RAD( 150));
  LegAng(b,2, RAD( -20), RAD(  15), RAD( 150));
  m[n].body = b;
  m[n].time = 6*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("k_unsw_10.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);

  //==== UNSW slow front kick (state 11) ====//
  mzero(b);
  MouthAng(b,-.7);

  ////   ht   hp   hr   rfj   rfs   rfk   lfj   lfs   lfk   rhj   rhs   rhk   lhj   lhs   lhk 
  //{    10,   0,   0,   70,   45,   30,   70,   45,   30,  -30,   15,  150,  -30,   15,  150 0-5
  //{    10,   0,   0,   70,  -20,   30,   70,  -20,   30,  -30,   15,  150,  -30,   15,  150 6-11
  //{    10,   0,   0,   70,  -20,   30,   70,  -20,   30, -120,   30,  150, -120,   30,  150 12-23
  //{    10,   0,   0,  115,    0,  100,  115,    0,  100, -120,   30,  150, -120,   30,  150 24-29
  //{    10,   0,   0,   65,  -20,   20,   65,  -20,   20,  -20,   15,  150,  -20,   15,  150 30-35

  n = 0;
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng(b,RAD(10), 0.0, 0.0);
  LegAng(b,1, RAD(  70), RAD(  45), RAD(  30));
  LegAng(b,0, RAD(  70), RAD(  45), RAD(  30));
  LegAng(b,3, RAD( -30), RAD(  15), RAD( 150));
  LegAng(b,2, RAD( -30), RAD(  15), RAD( 150));
  m[n].body = b;
  m[n].time = 6*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  LegAng(b,1, RAD(  70), RAD( -20), RAD(  30));
  LegAng(b,0, RAD(  70), RAD( -20), RAD(  30));
  m[n].body = b;
  m[n].time = 6*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  LegAng(b,3, RAD(  30), RAD(-120), RAD( 150));
  LegAng(b,2, RAD(  30), RAD(-120), RAD( 150));
  m[n].body = b;
  m[n].time = 12*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  LegAng(b,1, RAD( 115), RAD(   0), RAD( 100));
  LegAng(b,0, RAD( 115), RAD(   0), RAD( 100));
  m[n].body = b;
  m[n].time = 6*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  LegAng(b,1, RAD(  65), RAD( -20), RAD(  20));
  LegAng(b,0, RAD(  65), RAD( -20), RAD(  20));
  LegAng(b,3, RAD( -20), RAD(  15), RAD( 150));
  LegAng(b,2, RAD( -20), RAD(  15), RAD( 150));
  m[n].body = b;
  m[n].time = 6*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("k_unsw_11.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);

  //==== UNSW Bash Type Kick (FRONT_KICK) (state 12, no aim) ====//
  mzero(b);
  MouthAng(b,-.7);

  //     ht   hp   hr   rfj   rfs   rfk   lfj   lfs   lfk   rhj   rhs   rhk   lhj   lhs   lhk
  //{    10,   0,   0,   70,  -20,   30,   70,  -20,   30, -120,   30,  150, -120,   30,  150   }, 0-11
  //{    10,   0,   0,  115,    0,  100,  115,    0,  100, -120,   30,  150, -120,   30,  150   }, 12-17
  //{    10,   0,   0,   65,  -20,   20,   65,  -20,   20,  -20,   15,  150,  -20,   15,  150   }  18-23

  n = 0;
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng(b,RAD(10), 0.0, 0.0);
  LegAng(b,1, RAD(  70), RAD( -20), RAD(  30));
  LegAng(b,0, RAD(  70), RAD( -20), RAD(  30));
  LegAng(b,3, RAD(-120), RAD(  30), RAD( 150));
  LegAng(b,2, RAD(-120), RAD(  30), RAD( 150));
  m[n].body = b;
  m[n].time = 12*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  LegAng(b,1, RAD( 115), RAD(   0), RAD( 100));
  LegAng(b,0, RAD( 115), RAD(   0), RAD( 100));
  m[n].body = b;
  m[n].time = 6*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  LegAng(b,1, RAD(  65), RAD( -20), RAD(  20));
  LegAng(b,0, RAD(  65), RAD( -20), RAD(  20));
  LegAng(b,3, RAD( -20), RAD(  15), RAD( 150));
  LegAng(b,2, RAD( -20), RAD(  15), RAD( 150));
  m[n].body = b;
  m[n].time = 6*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("k_unsw_12_front.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);

  //==== UNSW Sideways tapping kick (state 13) ====//
  mzero(b);
  MouthAng(b,-.7);

  ////   ht   hp   hr   rfj   rfs   rfk   lfj   lfs   lfk   rhj   rhs   rhk   lhj   lhs   lhk
  //{    -5,   0,   0,   70,  -20,   30,   70,  -20,   30,  -30,   15,  150,  -30,   15,  150 0-8
  //{    -5,   0,   0,  100,   30,   10,  100,   80,   10,  -90,   65,   70,  -90,   65,   90 9-17
  //{    10,   0,   0,  100,  -20,   10,  100,   80,   10,  -90,   65,  100,  -90,   65,   30 18-26

  n = 0;
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng(b,RAD(-5), 0.0, 0.0);
  LegAng(b,1, RAD(  70), RAD( -20), RAD(  30));
  LegAng(b,0, RAD(  70), RAD( -20), RAD(  30));
  LegAng(b,3, RAD( -30), RAD(  15), RAD( 150));
  LegAng(b,2, RAD( -30), RAD(  15), RAD( 150));
  m[n].body = b;
  m[n].time = 9*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  LegAng(b,1, RAD( 100), RAD(  30), RAD(  10));
  LegAng(b,0, RAD( 100), RAD(  80), RAD(  10));
  LegAng(b,3, RAD( -90), RAD(  65), RAD(  70));
  LegAng(b,2, RAD( -90), RAD(  65), RAD(  90));
  m[n].body = b;
  m[n].time = 9*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng(b,RAD(10), 0.0, 0.0);
  LegAng(b,1, RAD( 100), RAD( -20), RAD(  10));
  LegAng(b,0, RAD( 100), RAD(  80), RAD(  10));
  LegAng(b,3, RAD( -90), RAD(  65), RAD(  90));
  LegAng(b,2, RAD( -90), RAD(  65), RAD(  30));
  m[n].body = b;
  m[n].time = 9*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("k_unsw_13.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);

  //==== UNSW Bash, Power front kick (CHUNKY_KICK) (state 14) ====//
  mzero(b);
  MouthAng(b,-.7);

  //   ht   hp   hr   rfj   rfs   rfk   lfj   lfs   lfk   rhj   rhs   rhk   lhj   lhs   lhk
  //{    -5,   0,   0,   55,  -20,   20,   55,  -20,   20,    0,   60,  140,    0,   60,  140   }, 0-11
  //{    -5,   0,   0,  130,    0,   90,  130,    0,   90,    0,   60,  140,    0,   60,  140   }, 12-17
  //{    -5,   0,   0,   55,  -20,   20,   55,  -20,   20,    0,    0,  140,    0,    0,  140   }  18-23

  n = 0;
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng(b,RAD(-5), 0.0, 0.0);
  LegAng(b,1, RAD(  55), RAD( -20), RAD(  20));
  LegAng(b,0, RAD(  55), RAD( -20), RAD(  20));
  LegAng(b,3, RAD(   0), RAD(  60), RAD( 140));
  LegAng(b,2, RAD(   0), RAD(  60), RAD( 140));
  m[n].body = b;
  m[n].time = 12*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  LegAng(b,1, RAD( 130), RAD(   0), RAD(  90));
  LegAng(b,0, RAD( 130), RAD(   0), RAD(  90));
  m[n].body = b;
  m[n].time = 6*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  LegAng(b,1, RAD(  55), RAD( -20), RAD(  20));
  LegAng(b,0, RAD(  55), RAD( -20), RAD(  20));
  LegAng(b,3, RAD(   0), RAD(   0), RAD( 140));
  LegAng(b,2, RAD(   0), RAD(   0), RAD( 140));
  m[n].body = b;
  m[n].time = 6*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("k_unsw_14_power_chunky.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);

  //==== UNSW goalie block (state 15) ====//
  mzero(b);
  MouthAng(b,-.7);

  //     ht   hp   hr   rfj   rfs   rfk   lfj   lfs   lfk   rhj   rhs   rhk   lhj   lhs   lhk
  //{    30,   0,   0,    0,   90,   20,    0,   90,   20,   20,   12,   30,   20,   12,   30 0-19  //block with front legs
  //{     0,   0,   0,  -12,   17,  110,  -12,   17,  110,  -35,   12,   92,  -35,   12,   92 20-27 //get up

  n = 0;
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng(b,RAD(30), 0.0, 0.0);
  LegAng(b,1, RAD(   0), RAD(  90), RAD(  20));
  LegAng(b,0, RAD(   0), RAD(  90), RAD(  20));
  LegAng(b,3, RAD(  20), RAD(  12), RAD(  30));
  LegAng(b,2, RAD(  20), RAD(  12), RAD(  30));
  m[n].body = b;
  m[n].time = 20*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng(b,RAD(0), 0.0, 0.0);
  LegAng(b,1, RAD( -12), RAD(  17), RAD( 110));
  LegAng(b,0, RAD( -12), RAD(  17), RAD( 110));
  LegAng(b,3, RAD( -35), RAD(  12), RAD(  92));
  LegAng(b,2, RAD( -35), RAD(  12), RAD(  92));
  m[n].body = b;
  m[n].time = 8*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("k_unsw_15.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);

  //==== UNSW Bash (LIGHTNING_KICK) (state 17) ====//
  mzero(b);
  MouthAng(b,-.7);

  //{   -65,   0,   0,  130,    0,   80,  130,    0,   80,    0,   60,  140,    0,   60,  140   }, 0-9
  //{   -10,   0,   0,   55,  -20,   20,   55,  -20,   20,    0,    0,  140,    0,    0,  140   }  10-15

  n = 0;
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng(b,RAD(-5), 0.0, 0.0);
  LegAng(b,1, RAD( 130), RAD(   0), RAD(  80));
  LegAng(b,0, RAD( 130), RAD(   0), RAD(  80));
  LegAng(b,3, RAD(   0), RAD(  60), RAD( 140));
  LegAng(b,2, RAD(   0), RAD(  60), RAD( 140));
  m[n].body = b;
  m[n].time = 10*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng(b,RAD(10), 0.0, 0.0);
  m[n].body = b;
  m[n].time = 3*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng(b,RAD(10), 0.0, 0.0);
  LegAng(b,1, RAD(  55), RAD( -20), RAD(  20));
  LegAng(b,0, RAD(  55), RAD( -20), RAD(  20));
  LegAng(b,3, RAD(   0), RAD(   0), RAD( 140));
  LegAng(b,2, RAD(   0), RAD(   0), RAD( 140));
  m[n].body = b;
  m[n].time = 6*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("k_unsw_17_lightning.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);

  //==== UNSW goalie kick (James) (state 18) ====//
  mzero(b);
  MouthAng(b,-.7);

  ////   ht   hp   hr   rfj   rfs   rfk   lfj   lfs   lfk   rhj   rhs   rhk   lhj   lhs   lhk
  //{    -5,   0,   0,   55,  -20,   20,   55,  -20,   20,    0,   60,  140,    0,   60,  140 0-11
  //{    -5,   0,   0,  130,    0,  100,  130,    0,  100,    0,   60,  140,    0,   60,  140 12-17
  //{    -5,   0,   0,   55,  -20,   20,   55,  -20,   20,    0,    0,  140,    0,    0,  140 18-23

  n = 0;
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng(b,RAD(-5), 0.0, 0.0);
  LegAng(b,1, RAD(  55), RAD( -20), RAD(  20));
  LegAng(b,0, RAD(  55), RAD( -20), RAD(  20));
  LegAng(b,3, RAD(   0), RAD(  60), RAD( 140));
  LegAng(b,2, RAD(   0), RAD(  60), RAD( 140));
  m[n].body = b;
  m[n].time = 12*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  LegAng(b,1, RAD( 130), RAD(   0), RAD( 100));
  LegAng(b,0, RAD( 130), RAD(   0), RAD( 100));
  LegAng(b,3, RAD(   0), RAD(  60), RAD( 140));
  LegAng(b,2, RAD(   0), RAD(  60), RAD( 140));
  m[n].body = b;
  m[n].time = 6*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  LegAng(b,1, RAD(  55), RAD( -20), RAD(  20));
  LegAng(b,0, RAD(  55), RAD( -20), RAD(  20));
  LegAng(b,3, RAD(   0), RAD(   0), RAD( 140));
  LegAng(b,2, RAD(   0), RAD(   0), RAD( 140));
  m[n].body = b;
  m[n].time = 6*UNSWTimeStep;
  n++;

  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("k_unsw_18.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);

}
