

{init}
	(C.L.AI_lights_blinkgeberintervall) s0 100 random 100 / 0.5 - l0 * 5 / + (S.L.AI_lights_blinkgeberintervall)
{end}

{frame}




'---------------------------------------------------
'Antriebsmoment anhand der Übersetzung bestimmen:


(L.L.engine_n) (F.L.engine_M_maxThrottle) (L.L.Throttle) * (S.L.engine_M) (L.L.antrieb_getr_ratio_act) * (C.L.antrieb_i_achse) * s0



'---------------------------------------------------
'Reduktion bzw. Zuschlag je nach Gang
(L.L.antrieb_getr_gang) 1 >
{if}
	l0 -300 1 (L.L.Throttle) - * (L.L.antrieb_getr_ratio_act) * (C.L.antrieb_i_achse) * + s0
{else}
	l0 70 1 (L.L.Throttle) - * (L.L.antrieb_getr_ratio_act) * (C.L.antrieb_i_achse) * + s0
{endif}

l0 (S.L.M_Wheel)




'---------------------------------------------------
'Einfach-Getriebe:


(L.L.engine_n) 500 <
{if}
	0 (S.L.antrieb_getr_gang) (S.L.antrieb_getr_ratio_act)
{else}
	(L.L.antrieb_getr_gang) 0 = (L.L.Velocity) 15 < && {if} 1 (S.L.antrieb_getr_gang) 0 (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_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_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_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_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_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_getr_ratio_act) (S.L.AI_clutchtimer) {endif}
{endif}






'---------------------------------------------------
'Einfach-Getriebe:

(L.L.Wheel_RotationSpeed_1_R) (C.L.antrieb_i_achse) * (S.L.antrieb_n_kardanwelle) s0

'---------------------------------------------------
'Motor-Solldrehzahl


'Wenn der Motor aus sein soll, dann nimm 0 als Sollwert:

'(L.L.AI_Engine) -0.5 <
'{if}
'	0 (S.L.AI_engine_n_soll)
'
'Sonst isser an:
'
'{else}
	(L.L.antrieb_getr_gang) 1 >
	{if}
		l0 (L.L.antrieb_getr_ratio_act) * (S.L.AI_engine_n_soll)
	{else}
		(L.L.velocity) (F.L.AI_wandler_leer) (L.L.velocity) (F.L.AI_wandler_last) (L.L.velocity) (F.L.AI_wandler_leer) - (L.L.Throttle) * + (S.L.AI_engine_n_soll)
	{endif}
'{endif}





(L.L.AI_clutchtimer) (L.S.Timegap) + (S.L.AI_clutchtimer)

2 <
{if}
	0 (S.L.antrieb_getr_ratio_act)	
	800 (S.L.AI_engine_n_soll)
	0 (S.L.engine_M)
	0 (S.L.Throttle)
{else}
	(L.L.antrieb_getr_gang) (F.L.antrieb_getr_ratio) (S.L.antrieb_getr_ratio_act)
{endif}




(L.L.AI_engine_n_soll) s0
(L.L.engine_n) s1
1.5 s2
2 s3
(M.L.traegheit)	
l1 (S.L.engine_n)


(L.L.engine_n) (S.L.Debug_0)


	(L.L.Brake) (C.L.AI_F_brems_max) * (S.L.Brakeforce)


'#########################################
'   AI-Lights

	(L.S.Gettime) (L.L.AI_lights_blinkgeberintervall) 2 * / s0 trunc s1 l0 l1 - 0.5 > s0

	l0 (L.L.AI_Blinker_L) && (S.L.lights_blinker_l)
	l0 (L.L.AI_Blinker_R) && (S.L.lights_blinker_r)

'#########################################
' Falls Stationen, setze immer auf 0:
	0 (S.L.AI_Scheduled_AtStation)

'#########################################
' Auspuff:

	(L.L.Throttle) 3 * 1 + (S.L.exhaust_speed)
	(L.L.engine_n) 60 / (S.L.exhaust_freq)
	(L.L.Throttle) 1 + 0.5 * (S.L.exhaust_live)
	(L.L.Throttle) 1 * 0.2 + (S.L.exhaust_alpha)

	(L.S.Weather_Temperature) s0 5 <
	{if}
		(L.L.engine_n) 60 / (S.L.exhaust_freq)
		6 l0 - 20 / (L.S.Weather_AbsHum) * 3 min (S.L.exhaust_steam_live)
	{else}
		0 (S.L.exhaust_steam_freq)
	{endif}

'#########################################
' Nasse Straße:

	(L.L.StreetCond) d 1 >= 2 <= &&
	{if}
		(L.L.Velocity) 30 / 1 min (S.L.tire_wet_live)
		(L.L.Velocity) (S.L.tire_wet_freq)
	{else}
		0 (S.L.tire_wet_freq)
	{endif}	
	
{end}


{macro:traegheit}

'Simuliert träges Verhalten (exponentiell)

'Ladekonventionen:
'	Sollwert		l0
'	Istwert			l1
'	Konstante Anlauf	l2 (Einheiten/s)
'	Konstante Ablauf	l3 (Einheiten/s)

'Anlauf oder Auslauf?
	l0 l1 > 
	{if}
		l2 (L.S.Timegap) * 1 min -1 max s4
	{else}
		l3 (L.S.Timegap) * 1 min -1 max s4
	{endif}


'Sollwert:
	l0
'Istwert:
	l1
'Beschleunigung:
	- l4 *
'Addition zum Istwert:
	l1 + s1
{end}


