This [[ProtocolZero]] command tells the agent to shove the object directly in front of it. The object that is shoved is called the "target". It is selected by effectively shooting a mode-7 [[rf|rangefinder]] in the direction of the quagent's current facing, so if the quagent is looking down it will usually immediately hit the floor and report "invalid_target". On the other hand, if the quagent is looking at a level pitch, it will pick up any objects sitting on the floor that a mode-3 rangefinder would pass over. '''Parameters:''' * 1: float strength, the power of the shove. 500 is usually more than sufficient for most tasks: 5000 is usually enough to catapult someone outside of the level. A shove of 400 will move an object as fast as a normal quagent can run (though unless the object is arched upward, friction will quickly stop it). * 2: float shove_yaw, the direction in degrees to shove the target relative to the quagent's facing. A yaw of 0 is straight ahead, a yaw of 90 is straight to the left. This does not change the target selection, merely the direction of the imparted motion. * 3: float shove_pitch, the direction in degrees to shove the target relative to the quagent's facing. A pitch of 0 is straight where the quagent is looking. Negative pitches are up, and positive pitches are down. To get a good shove it is wise to angle it slightly up from the ground, much like tossing a ball somewhat upward will result in a longer throw. '''Reports:''' * ''done'' after the shove is attempted. This does not guarantee that the shoved object will move, however: for example, shoving something directly into a wall or the floor does not guarantee motion (though most objects will bounce). * ''invalid_target'' if the object that would be selected as a target is not something that can be shoved (such as a wall or floor). * ''nothing_there'' if no target (valid or invalid) exists. * ''popped'' if popped by [[po]]. * ''forgotten'' if deleted by [[fa]] or [[fm]]. * ''replaced'' if replaced by a command scheduled with 'r'. '''Example:''' * User sends: "n sv 512 500 0 -45" * Bot replies: "cp sv 512 done" * Object goes flying forward and up at velocity 500 during the game update phase.