Version 2 (modified by jpawlick, 14 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.