Private ["_demonstrant", "_zufallsZeitAbstand", "_zufallsBlickwinkel", "_gruppe", "_wegpunkt"];

if (!isServer) exitWith { diag_log "FEHLER: Nur der Server kann Demonstranten demonstrieren lassen!"; };

_demonstrant = [_this,0,objNull,[objNull]] call BIS_fnc_param;

_demonstrant setVariable ["demonstriertGerade", true, true];

_zufallsZeitAbstand = (random 20) / 10.0;
sleep _zufallsZeitAbstand;

_zufallsBlickwinkel = (getDir _demonstrant) + (-90 + (random 180));
_demonstrant setDir _zufallsBlickwinkel;

_gruppe = group _demonstrant;
_wegpunkt =_gruppe addWaypoint [position _demonstrant, 3];
_wegpunkt setWaypointType "MOVE";  
_wegpunkt setWaypointSpeed "LIMITED";  

_wegpunkt =_gruppe addWaypoint [position _demonstrant, 0];
_wegpunkt setWaypointType "CYCLE";  

while { _demonstrant getVariable ["demonstriertGerade", false] }  do
{ 
	Private ["_zufallsWert", "_zufallsDauer", "_zufallsAnzahl"];

	_zufallsWert = ceil(random 10); // Manchmal einen zufälligen Demosound abspielen
	if (_zufallsWert == 1) then { _demonstrant say3D "trillerPfeife"; };
	if (_zufallsWert == 2) then { _demonstrant say3D "buhRufe"; };
	if (_zufallsWert == 3) then { _demonstrant say3D "gerauesche"; };

	_zufallsDauer = 1 + (random 4);	// _zufallsDauer warten, damit nicht alle Demonstranten synchron sind
	sleep _zufallsDauer;

	_zufallsAnzahl = 1 + (random 4); // _zufallsAnzahl mal Hände hoch und runter nehmen
	for [ {_index = 0}, {_index < _zufallsAnzahl}, {_index = _index + 1} ] do
	{	
		_demonstrant playMove "amovpercmstpsnonwnondnon_amovpercmstpssurwnondnon"; // Hände hoch
		sleep 1.0;
			
		_demonstrant switchMove "AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon"; // Hände runter
		sleep 1.0;
	};

	if ( !(alive _demonstrant) ) then {
		_demonstrant setVariable ["demonstriertGerade", false, true];
	};
};

_demonstrant playMoveNow "AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon"; // Hände runter