# Option do-kick Perform a special action and notify team mates that kick is executed Parameters of that option:
Parameter | Measure | Range | Description
do-kick.special-action-id | integer | 0.. | Special action ID of kick to perform
do-kick.target-action-id | integer | 0.. | Target special action ID. If not zero, option reaches target state when this action is executed.
## State Machine ## State do-kick
If that state is active,
> | The basic behavior special-action is executed. Parameters:
| special-action-id | = | ::do-kick.special-action-id ;
> | These output symbols are set:
| head-control-mode | = | head-control-mode.search-for-ball
| team-message | = | team-message.performing-a-kick
The decision tree:
Pseudo code of the decision tree:
if ( |
( |
( | ::do-kick.target-action-id == 0 | )
&& |
( | executed-motion-request.motion-type == special-action | )
&& |
( | executed-motion-request.special-action-type == ::do-kick.special-action-id | )
| )
( |
( | ::do-kick.target-action-id != 0 | )
&& |
( | executed-motion-request.motion-type == special-action | )
&& |
( | executed-motion-request.special-action-type == ::do-kick.target-action-id | )
| )
| ) | // kick started
{
transition-to-state(kick-in-progress);
}
else
{
transition-to-state(do-kick);
}
## State kick-in-progress
If that state is active,
> | The basic behavior stand is executed.
> | These output symbols are set:
| head-control-mode | = | head-control-mode.search-for-ball
| team-message | = | team-message.performing-a-kick
The decision tree:
Pseudo code of the decision tree:
if ( |
!( | executed-motion-request.motion-type == special-action | )
| ) | // kick finished
{
transition-to-state(finished);
}
else
{
transition-to-state(kick-in-progress);
}
## State finished
This state is a target state.
If that state is active,
> | The basic behavior stand is executed.
> | These output symbols are set:
| head-control-mode | = | head-control-mode.search-for-ball
The decision tree:
Pseudo code of the decision tree:
transition-to-state(finished);