'########################################
'#                                      #
'#              MAIN SCRIPT             #
'#                                      #
'#    MAN Standarddoppeldecker SD200    #
'#                                      #
'#             Bauart SD80              #
'#                                      #
'########################################

'(c) 10.08.2009 Marcel Kuhnt, Rüdiger Hülsmann

'Script Version: 1.0
'Omsi release: 1.0


'Revision History:
'- Marcel Kuhnt		10.08.2009	Added Revision History
'- Rüdiger Hülsmann	18.09.2010	Microphone stored in cockpit script
'- Marcel Kuhnt		30.11.2010	Bugfix: press [D] in AI mode if motor running but neutral
'- Marcel Kuhnt		10.01.2013	Schaltwagen-KI
'- Marcel Kuhnt		15.01.2013	Automatische Kupplung implementiert

'------------------------------------------------------------------------------------------


'######################
'	Hauptteil
'######################

{init}
	(M.L.engine_Init)
	(M.L.antrieb_init)
	(M.L.Elec_Init)
	(M.L.Door_Init)
	(M.L.wiper_init)
	(M.L.lights_init)
	(M.L.bremse_init)
	(M.L.rollband_init)
	(M.L.cockpit_init)
	(M.L.heizung_init)
	(M.L.IBIS_init)
	(M.L.Collision_Init)
	(M.L.ticketprinter_init)
{end}

{frame}


'=================================================================================
' Schaltwagen fahren - keine leichte Angelegenheit, auch nicht für die KI! :-)

	(L.L.AI)
	{if}
		(L.L.engine_n) 500 < (L.L.AI_Scheduled_AtStation) 1 = ||
		{if}
			0 (S.L.antrieb_getr_gang) (S.L.antrieb_shifter_posy_target)
		{else}
			(L.L.antrieb_getr_gang) 0 = (L.L.Velocity) 15 < && {if} 1 (S.L.antrieb_getr_gang) 0 (S.L.antrieb_shifter_posy_target) (S.L.antrieb_getr_ratio_act) (S.L.AI_clutchtimer) {endif}
			(L.L.antrieb_getr_gang) 1 = (L.L.Velocity) 15 > && {if} 2 (S.L.antrieb_getr_gang) 0 (S.L.antrieb_shifter_posy_target) (S.L.antrieb_getr_ratio_act) (S.L.AI_clutchtimer) {endif}
			(L.L.antrieb_getr_gang) 2 = (L.L.Velocity) 25 > && {if} 3 (S.L.antrieb_getr_gang) 0 (S.L.antrieb_shifter_posy_target) (S.L.antrieb_getr_ratio_act) (S.L.AI_clutchtimer) {endif}
			(L.L.antrieb_getr_gang) 3 = (L.L.Velocity) 40 > && {if} 4 (S.L.antrieb_getr_gang) 0 (S.L.antrieb_shifter_posy_target) (S.L.antrieb_getr_ratio_act) (S.L.AI_clutchtimer) {endif}
			(L.L.antrieb_getr_gang) 4 = (L.L.Velocity) 55 > && {if} 5 (S.L.antrieb_getr_gang) 0 (S.L.antrieb_shifter_posy_target) (S.L.antrieb_getr_ratio_act) (S.L.AI_clutchtimer) {endif}
			(L.L.antrieb_getr_gang) 2 = (L.L.Velocity)  3 < && {if} 1 (S.L.antrieb_getr_gang) 0 (S.L.antrieb_shifter_posy_target) (S.L.antrieb_getr_ratio_act) (S.L.AI_clutchtimer) {endif}
			(L.L.antrieb_getr_gang) 3 = (L.L.Velocity) 17 < && {if} 2 (S.L.antrieb_getr_gang) 0 (S.L.antrieb_shifter_posy_target) (S.L.antrieb_getr_ratio_act) (S.L.AI_clutchtimer) {endif}
			(L.L.antrieb_getr_gang) 4 = (L.L.Velocity) 28 < && {if} 3 (S.L.antrieb_getr_gang) 0 (S.L.antrieb_shifter_posy_target) (S.L.antrieb_getr_ratio_act) (S.L.AI_clutchtimer) {endif}
			(L.L.antrieb_getr_gang) 5 = (L.L.Velocity) 39 < && {if} 4 (S.L.antrieb_getr_gang) 0 (S.L.antrieb_shifter_posy_target) (S.L.antrieb_getr_ratio_act) (S.L.AI_clutchtimer) {endif}
		{endif}
	{endif}		

	(L.L.AI) (L.S.AutoClutch) ||	
	{if}
		(L.L.antrieb_getr_ratio_act) 0 = !
		{if}
'Kupplungspedal variiert abhängig von Drehzahl und Gaspedal:
'Schwankungsbereich 100 UPM bei Leerlauf bis 1100 UPM bei Vollgas,
'Drehzahl bei komplett "losgelassener" Kupplung 550 (unterhalb 10km/h) bzw. 750 UPM bei Leerlauf,
'1950 / 2150 UPM (Leerlauf + 1400UPM) bei Vollgas

'Geschwindigkeitsabhängig oberhalb oder unterhalb Leerlaufdrehzahl auskuppeln:

			(L.L.Velocity) 10 >
			{if}
				550
			{else}
				750
			{endif}
			(L.L.Throttle) 1400 * + s0

'Drehzahlschwankungsspanne ist ebenfalls abhängig vom Gaspedal:
			(L.L.Throttle) 1000 * 100 + s1

			l0 (L.L.engine_n) - l1 / 0 max 1 min
			(L.L.Clutch) (L.S.Timegap) 0.25 * - max s0

			l0 1 (L.L.AI_clutchtimer) 0 max - max (S.L.Clutch)
			(L.L.Throttle) (L.L.AI_clutchtimer) 0 max min (S.L.Throttle)
			(L.L.AI_clutchtimer) 1 <
			{if}
				(L.L.AI_clutchtimer) (L.S.Timegap) + (S.L.AI_clutchtimer)
			{endif}
		{else}
			0 (S.L.Throttle)
			(L.L.antrieb_getr_gang) 0 = 
			{if}
				0
			{else}
				1
			{endif}
			(S.L.Clutch)
			-0.8 (S.L.AI_clutchtimer)
		{endif}
	{endif}


	(M.L.Engine_Frame)
	(M.L.Antrieb_Frame)
	(M.L.Elec_Frame)
	(M.L.Door_frame)
	(M.L.cockpit_frame)
	(M.L.lights_frame)
	(M.L.wiper_frame)
	(M.L.Auspuff_Frame)
	(M.L.bremse_frame)
	(M.L.klappern_frame)
	(M.L.rollband_frame)
	(M.L.FF_frame)
	(M.L.rain_frame)
	(M.L.dirt_frame)
	(M.L.sound_volume_frame)
	(M.L.heizung_frame)
	(M.L.IBIS_frame)
	(M.L.wimpel_frame)
	(M.L.ident-features_frame)
	(M.L.cashdesk_frame)
	(M.L.ticketprinter_frame)
	(M.L.spray_frame)

	(L.L.engine_n)
	(S.L.debug_0)

	(L.L.elec_battery_T)
	(S.L.debug_1)

	(L.L.elec_battery_load)
	(S.L.debug_2)

	(L.L.elec_I_battery)
	(S.L.debug_3)

	(L.L.elec_battery_Q_curr)
	(S.L.debug_4)

	(L.L.antrieb_Clutch_Variation)
	(S.L.debug_5)





'Strom einschalten

	(L.L.AI)
	{if}
		1 (S.L.cp_schluessel_trans_mode)
		(S.L.elec_busbar_main_sw)
	{endif}

	(L.L.AI_Engine) 0.5 >
	(L.L.engine_on) 0.5 <
	&&
	{if}
		0 (S.L.bremse_feststell_sw) (S.L.bremse_feststell)
		1 (S.L.engine_injection_on)
		400 (S.L.engine_n)
		1 (S.L.engine_on)
'Motorbremse aus, kann er eh nicht bedienen:
		0 (S.L.cp_retarder_sw)
	{endif}

	(L.L.AI_Engine) -0.5 <
	(L.L.engine_on) 0.5 >
	&&
	{if}
		0 (S.L.engine_on)
		0 (S.L.engine_injection_on)
		1 (S.L.bremse_feststell_sw) (S.L.bremse_feststell)
	{endif}




{end}

'=================================================================================
'Crash:

{trigger:collision}
	(M.L.Collision_Trigger)
{end}


'----------------------------------
'malfunction reset:


{trigger:malfunction_reset}
	1.0 (S.L.elec_V_battery)
	(M.L.Collision_Malfunction_Reset)
{end}

