{
 "pack": 1,
 "id": "c4c:beh:cycle_walk_fours",
 "type": "behaviour",
 "version": "1.0.0",
 "name": "Walk (four legs, in place)",
 "description": "An animal on four legs walks in place, its legs stepping in diagonal pairs, its paws flat in stance and its head and tail swaying: the walk of the game cycles for four legs. The stride fits the speed.",
 "author": {
  "id": "c4c",
  "name": "Crafts4Class"
 },
 "license": "c4c-free",
 "remixable": true,
 "derived_from": [],
 "preview": {
  "moves": [
   "cycle_walk_fours"
  ],
  "seconds": 3
 },
 "content_hash": "sha256:ab21850a9e95a7d7bc20984030a1edb34edaf227eaba54a3013479fce140b441",
 "content": {
  "v": 1,
  "kind": "behaviour",
  "name": "cycle_walk_fours",
  "params": {
   "speed": 0.75,
   "h": 540,
   "leg": 0.33,
   "every": "=clamp(0.9 - 0.3*speed, 0.45, 0.8)",
   "stride": "=57.29578*((clamp(speed*every/(4*leg), 0, 0.6)) + pow(clamp(speed*every/(4*leg), 0, 0.6), 3)/6 + 3*pow(clamp(speed*every/(4*leg), 0, 0.6), 5)/40)",
   "give": 6,
   "bend": 30,
   "feet": 0.4
  },
  "scripts": [
   {
    "hat": {
     "on": "start"
    },
    "body": [
     {
      "op": "view",
      "to": "side"
     },
     {
      "op": "gait",
      "every": "=every",
      "stride": "=stride",
      "give": "=give",
      "bend": "=bend",
      "armSwing": 0,
      "bob": null,
      "roll": 0.6,
      "view": "side"
     },
     {
      "op": "drive",
      "ch": "part:foot#0",
      "value": "=-feet*(stride*((1 - 4*mod(local/every + 0, 1))*(1 - step(0.5, mod(local/every + 0, 1))) + (4*mod(local/every + 0, 1) - 3)*step(0.5, mod(local/every + 0, 1))) + (give*(1 - step(0.5, mod(local/every + 0, 1))) + bend*step(0.5, mod(local/every + 0, 1)))*sin(pi*(2*mod(local/every + 0, 1) - step(0.5, mod(local/every + 0, 1)))))"
     },
     {
      "op": "drive",
      "ch": "part:foot#1",
      "value": "=-feet*(stride*((1 - 4*mod(local/every + 0.5, 1))*(1 - step(0.5, mod(local/every + 0.5, 1))) + (4*mod(local/every + 0.5, 1) - 3)*step(0.5, mod(local/every + 0.5, 1))) + (give*(1 - step(0.5, mod(local/every + 0.5, 1))) + bend*step(0.5, mod(local/every + 0.5, 1)))*sin(pi*(2*mod(local/every + 0.5, 1) - step(0.5, mod(local/every + 0.5, 1)))))"
     },
     {
      "op": "drive",
      "ch": "part:foot#2",
      "value": "=-feet*(stride*((1 - 4*mod(local/every + 0.5, 1))*(1 - step(0.5, mod(local/every + 0.5, 1))) + (4*mod(local/every + 0.5, 1) - 3)*step(0.5, mod(local/every + 0.5, 1))) + (give*(1 - step(0.5, mod(local/every + 0.5, 1))) + bend*step(0.5, mod(local/every + 0.5, 1)))*sin(pi*(2*mod(local/every + 0.5, 1) - step(0.5, mod(local/every + 0.5, 1)))))"
     },
     {
      "op": "drive",
      "ch": "part:foot#3",
      "value": "=-feet*(stride*((1 - 4*mod(local/every + 0, 1))*(1 - step(0.5, mod(local/every + 0, 1))) + (4*mod(local/every + 0, 1) - 3)*step(0.5, mod(local/every + 0, 1))) + (give*(1 - step(0.5, mod(local/every + 0, 1))) + bend*step(0.5, mod(local/every + 0, 1)))*sin(pi*(2*mod(local/every + 0, 1) - step(0.5, mod(local/every + 0, 1)))))"
     },
     {
      "op": "drive",
      "ch": "dy",
      "value": "=h*leg/2*(2 - (1 - step(0.5, mod(local/every, 1)))*(cos((stride*((1 - 4*mod(local/every + 0, 1))*(1 - step(0.5, mod(local/every + 0, 1))) + (4*mod(local/every + 0, 1) - 3)*step(0.5, mod(local/every + 0, 1))))*pi/180) + cos(((stride*((1 - 4*mod(local/every + 0, 1))*(1 - step(0.5, mod(local/every + 0, 1))) + (4*mod(local/every + 0, 1) - 3)*step(0.5, mod(local/every + 0, 1)))) + ((give*(1 - step(0.5, mod(local/every + 0, 1))) + bend*step(0.5, mod(local/every + 0, 1)))*sin(pi*(2*mod(local/every + 0, 1) - step(0.5, mod(local/every + 0, 1))))))*pi/180)) - step(0.5, mod(local/every, 1))*(cos((stride*((1 - 4*mod(local/every + 0.5, 1))*(1 - step(0.5, mod(local/every + 0.5, 1))) + (4*mod(local/every + 0.5, 1) - 3)*step(0.5, mod(local/every + 0.5, 1))))*pi/180) + cos(((stride*((1 - 4*mod(local/every + 0.5, 1))*(1 - step(0.5, mod(local/every + 0.5, 1))) + (4*mod(local/every + 0.5, 1) - 3)*step(0.5, mod(local/every + 0.5, 1)))) + ((give*(1 - step(0.5, mod(local/every + 0.5, 1))) + bend*step(0.5, mod(local/every + 0.5, 1)))*sin(pi*(2*mod(local/every + 0.5, 1) - step(0.5, mod(local/every + 0.5, 1))))))*pi/180))) - 0.01*h"
     },
     {
      "op": "wave",
      "ch": "part:head",
      "shape": "sin",
      "every": "=every/2",
      "amp": 2,
      "phase": 0.6
     },
     {
      "op": "wave",
      "ch": "part:tail",
      "shape": "sin",
      "every": "=every",
      "amp": 10,
      "phase": 1.2
     }
    ]
   }
  ]
 }
}
