wiki:sv

Version 3 (modified by jpawlick, 13 years ago) (diff)

--

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 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.