;-- Relies on Chimera profile/class
;-- parameters that have comments with (;-->) tag are adjusted

[m_lurker_e]:monster_base
GroupControlSection				= spawn_group
SpaceRestrictionSection			= space_restrictor,zone_mosquito_bald,zone_witches_galantine,zone_burning_fuzz1,zone_mincer,zone_gravi_zone
$spawn               			= "monsters\lurker\lurker_default"		;"monsters\chimera\chimera_default"		; option for Level Editor
$npc			     			= on						; option for Level Editor
;$prefetch 			 			= 16
visual		= monsters\lurker\lurker
corpse_visual	= monsters\lurker\lurker
icon							= ui_npc_monster_lurker		; @@@@@NEEDS REFACTORING@@@@@

terrain				 			= lurker_terrain

;------------------------------------------------------------------------
; Influences
;------------------------------------------------------------------------

fire_max_distance			=	0
fire_max_power				=	5
fire_linear_factor			=	0
fire_quadratic_factor		=	0.025

psy_max_distance			=	0
psy_max_power				=	5
psy_linear_factor			=	0.05
psy_quadratic_factor		=	0

radiation_max_distance		=	0
radiation_max_power			=	0.01
radiation_linear_factor		=	1
radiation_quadratic_factor	=	1
radiation_pp_effector_name	= 	postprocess_rad
radiation_pp_highest_at		= 	0.04

;spawn_phantom 		= m_phantom_chimera
can_spawn_phantom 	= false

;---OFFLINE ALIFE------------------------------------------------------------------
Scheduled						= on			; option for ALife Simulator
Human		     				= off			; option for ALife Simulator
Health							= 500			; option for ALife Simulator ;-->
MinSpeed						= 1.0			; option for ALife Simulator
MaxSpeed						= 3.0 	;5.0	; option for ALife Simulator ;-->
going_speed						= 3.0	;4.5	; option for ALife Simulator
current_level_going_speed		= 3.0	;2		; option for ALife Simulator
search_speed					= 1.5			; option for ALife Simulator
MaxHealthValue					= 200			; range [0..200]
smart_terrain_choose_interval	= 00:15:00
;-----------------------------------------------------------------------------------

script_binding       			= bind_monster.bind

ef_creature_type				= 20							; option for evaluation functions
ef_weapon_type					= 2
ef_detector_type			 	= 1
panic_threshold					= 0.08	;0.0 	;-->

cform                			= skeleton					; collision class
class                			= SM_CHIMS				; AI class
kind                		= SM_LURKER				; Fake class

bone_torso						= spine_1 			; bone name
bone_head			 			= head_boss				; bone name
bone_fire			 			= head_boss				; bone name
weapon_usage					= 0						; boolean

;---------------------------------------------------------------------
; Physics
;---------------------------------------------------------------------
ph_box0_center 		 			= 0.0,  0.9,  0.0
ph_box0_size 					= 0.35, 0.9,  0.35
ph_box1_center 		 			= 0.0,  0.6,  0.0
ph_box1_size 		 			= 0.40, 0.6,  0.40
ph_crash_speed_min				= 10
ph_crash_speed_max				= 30
ph_collision_damage_factor		= 0.01
ph_mass 		     			= 220;170

destroyed_vis_name	 			= dynamics\Dead_Body\skelet_crash_monster
;destroyed_vis_name	 			= dynamics\Dead_Body\skelet_crash

ph_skeleton_airr_lin_factor  	= 2.0 ;550.0 (изменно из-за того, что убрано домножение коэффициент 0.002 из кода)
ph_skeleton_airr_ang_factor   	= 0.0 ;0.0 (изменно из-за того, что убрано домножение на коэффициент 0.3 из кода (0.0*0.3=0.0))
ph_skeleton_hinger_factor1    	= 1.0 ;1.0 (изменно из-за того, что убрано домножение на коэффициент 5.0 из кода)
ph_skeleton_ddelay	     	  	= 15.0 ;Время изменения значения трения в суставе с момента создания шелла, сек

ph_skel_fatal_impulse_factor  	= 12.0
ph_after_death_velocity_factor	= 0.75
ph_skel_shot_up_factor        	= 0.25

;----------------------------------------------------------------------------
; Movement::Velocities & Acceleration
;----------------------------------------------------------------------------
; speed factors			         linear | angular_real | angular_path | min |  max
Velocity_Stand					= 0,		3.5,			1.5,		1,		1
Velocity_RunFwdNormal			= 11.5,		3.5,			2.0,		0.2,	1	

Velocity_RunFwdDamaged			= 9.0,  	3.5,			2.0,		0.2,	1
Velocity_WalkFwdDamaged			= 2.2,		3.0,			2.0,		0.5,	2.0	
Velocity_WalkFwdNormal			= 2.5,		3.2,			1.2,		0.02,	3.0		;-->
Velocity_Drag					= 2.0,		3.0,			3.0,		1,		1
Velocity_Steal					= 2.0,		3.0,			2.0,		1,		1
Velocity_Rotate					= 8.0,      9.0,            1.0,        0.3     1
Velocity_JumpGround				= 16.0,		3.5,			2.0,		0.4,	1
Velocity_JumpStart				= 16.0,		3.5,			2.0,		0.4,	1

Accel_Generic					= 1.5
Accel_Calm						= 3.5
Accel_Aggressive				= 9.5

;------------------------------------------------------------------------
; Attack specific
;------------------------------------------------------------------------
prediction_factor				= 0.1
attack_radius					= 1 ;12   ; run around radius
prepare_jump_timeout			= 0 ; ms
attack_jump_timeout				= 0 		; ms
stealth_timeout					= 0		; ms
num_attack_jumps				= 1
num_prepare_jumps				= 0
;--------------------------------------------------------------------------
; Attack parameters
;--------------------------------------------------------------------------
MinAttackDist					= 1.8;1.2	;0.5
MaxAttackDist					= 4.8;2.7	;3.8
as_min_dist						= 1.2
as_step							= 0.3
hit_type						= wound				; type of attack

;--------------------------------------------------------------------------
; Jump parameters
;--------------------------------------------------------------------------
jump_delay						= 0
jump_factor						= 2
jump_ground_trace_range			= 1.5
jump_hit_trace_range 			= 2
jump_build_line_distance 		= 8.0
jump_min_distance 				= 0.1
jump_max_distance 				= 12.0	; 20.0	;-->
jump_max_angle 					= 0.55
jump_max_height					= 9.0
jump_auto_aim_factor 			= 0


;-------------------------------------------------------------------------
; Entity Conditions
;-------------------------------------------------------------------------
satiety_v						= 0.0001				;0.01			;скорость уменьшения сытости со временем
radiation_v						= 0.00001		;0.004			;скорость уменьшения радиации
satiety_power_v					= 0.0001		;0.01			;увеличение силы при уменьшении сытости 
satiety_health_v				= 0.0001	;0.03			;увеличение здоровья при уменьшении сытости 
satiety_critical				= -1.0		;0.25						;критическое значения сытости (в процентах от 0..1) когда здоровье начианает уменьшаться
radiation_health_v				= 0.01	;0.006			;уменьшение здоровья при воздействии радиации
morale_v						= 0.01					;скорость восстановления морали
health_hit_part					= 1.0		;0.8			;процент хита, уходящий на отнимание здоровья
power_hit_part					= 1.0		;0.9			;процент хита, уходящий на отнимание силы
psy_health_v					= 0.1						;скорость восстановления psy-здоровья

protections_sect 				= lurker_protections
immunities_sect					= lurker_immunities

;открытые раны
bleeding_v						= 0.04					;потеря крови при номинальной ране в секунду
wound_incarnation_v				= 0.05				;крутизна кривой заживления (какой процент раны останется после заживления в игровую секунду)
min_wound_size					= 0.01

;Health from which to play injured animation
DamagedThreshold				= 0.2

sleep_health 					= 1.0		;1.5				;коэффициенты скоростей изменения параметров во время сна
sleep_power 					= 1.0		;1.5
sleep_satiety 					= 1.0		;0.8
sleep_radiation					= 1.0	;1.1
sleep_psy_health				= 1.0

eat_freq						= 5.0		; частота укусов в сек
eat_slice						= 0.001	; увеличение сытости при 1 укусе
eat_slice_weight				= 10.0	; уменьшение еды у трупа

satiety_threshold				= 0.5							; below this value monster fill hunger

;-------------------------------------------------------------------------
; Morale
;-------------------------------------------------------------------------
Morale_Hit_Quant				= 0.2
Morale_Attack_Success_Quant		= 0.1
Morale_Take_Heart_Speed			= 0.1
Morale_Despondent_Speed			= 0.1
Morale_Stable_Speed				= 0.01
Morale_Despondent_Threashold	= 0.4


;---------------------------------------------------------
; Sounds and sound parameters
;---------------------------------------------------------
sound_idle				= monsters\lurker\idle_
sound_eat				= monsters\biting\def_			; eat_
sound_aggressive		= monsters\lurker\breath_
sound_attack_hit		= monsters\lurker\attack_hit_
sound_take_damage		= monsters\lurker\hit_
sound_die				= monsters\lurker\die_
sound_bkgnd				= monsters\lurker\idle_
;sound_threaten			= monsters\biting\def_			; threaten_
sound_threaten			= monsters\lurker\attack_
sound_landing			= monsters\biting\def_
sound_steal				= monsters\biting\def_
sound_panic				= monsters\lurker\idle_
sound_growling			= monsters\lurker\idle_
sound_die_in_anomaly	= monsters\lurker\die_

killer_clsids					= Z_MINCER,Z_GALANT,ZS_BFUZZ,ZS_MBALD,ZS_GALAN,ZS_MINCE


idle_sound_delay				=	25000	;5000
eat_sound_delay					=	3000
attack_sound_delay				=	1000

sound_distant_idle  = ambient\soundscape\mutants\lurker\distant_
distant_idle_sound_delay  = 50000
distant_idle_sound_range		= 50.0
max_hear_dist					= 70

SoundThreshold					= 0.1             ; range [0..1]

;--------------------------------------------------------------------------
; Lurker Damage
;--------------------------------------------------------------------------
;bone_name		 = <hit_scale>,-1,<wound_scale>
;<hit_scale>	- coefficient. change of hit (reduction of health) 
;<wound_scale>	- coefficient. changes in the size of an open wound

default							= 0.75, -1, 0.6

hip								= 1, -1, 0.25
spine 							= 0.9, -1, 0.1	;-->
spine_1 						= 0.9, -1, 0.1	;-->
neck_r							= 0.95, -1, 2.1
head_boss 						= 3.0, -1, 0.9

;-------------------------------------------------------------------------
; Other Stuff (refactoring needed)
;-------------------------------------------------------------------------
material						= creatures\medium
DynamicObjectsCount				= 32

squad_attack_algorithm			= 1
attack_effector					= m_lurker_attack_effector

critical_wound_threshold		= -1
critical_wound_decrease_quant	= 0.

attack_params					= m_lurker_attack_params
step_params						= m_lurker_step_params

LegsCount						= 4
damage							= m_chimera_damage

;species of monster
species							= chimera
community						= lurker

DayTime_Begin					= 6			;--> ; начала дня для монстра
DayTime_End						= 21		;--> ; конец дня для монстра
Min_Satiety						= 0.00055		; мин. норма сытости (меньше - уже голодный)
Max_Satiety						= 0.9		; макс. норма сытости (больше - очень сытый)

distance_to_corpse				= 1.2 ;4.5		; дист. до трупа, при которой он переходит в состояние еды

;-------------------------------------------------------------------------
; Vision
;-------------------------------------------------------------------------
eye_fov							= 110	;140
eye_range						= 110	;50

vision_free_section				= lurker_vision_free
vision_danger_section			= lurker_vision_danger

; ЗНАЧЕНИЯ visibility_threshold ДОЛЖНЫ БЫТЬ РАВНЫ для денжера и фри,
; иначе возникают артефакты с потерей видимости при переходе от денжера во фри.

[lurker_vision_free]
min_view_distance   			= 0.8				; коэффициент, который множится на eye_range, в зависимости от угла
max_view_distance	 			= 1.0				; коэффициент, который множится на eye_range, в зависимости от угла
visibility_threshold	 		= 100.0				; значение, при достижении суммой которого объект считается видимым
always_visible_distance 		= 0.6
time_quant						= 0.001
decrease_value					= 0.01				; значение, на которое уменьшается вес, если объект попал в фрустум, но отсёкся по каким-то причинам
velocity_factor		     		= 0.5
luminocity_factor				= 2.5 				; фактор освещения (только для Актёра)
transparency_threshold			= 0.25

[lurker_vision_danger]
min_view_distance   			= 0.8				; коэффициент, который множится на eye_range, в зависимости от угла
max_view_distance	 			= 1.6				; коэффициент, который множится на eye_range, в зависимости от угла
visibility_threshold	 		= 100.0				; значение, при достижении суммой которого объект считается видимым
always_visible_distance 		= 0.6
time_quant						= 0.001
decrease_value					= 0.01				; значение, на которое уменьшается вес, если объект попал в фрустум, но отсёкся по каким-то причинам
velocity_factor		     		= 0.5
luminocity_factor				= 2.5 				; фактор освещения (только для Актёра)
transparency_threshold			= 0.25

[lurker_protections]

hit_fraction_monster = 0.75
skin_armor = 0.1


;---------------------------------------------------------------------------------------------------------------------------------------------
;	anim			| time[0..1] | hit_power | impulse | impulse_dir (x,y,z)  |	Field of hit_test  (left,right, bottom, top ) |	Test Dist
;---------------------------------------------------------------------------------------------------------------------------------------------
[m_lurker_attack_params] ;-->
jump_attack_1  		= 	0.3,		0.65,		60,       0.0, 1.0, 0.0,		-1.6, 1.6, -1.6, 1.6,							  2.5

[m_lurker_attack_effector]
duality_h						= 0.1; 0.01 
duality_v						= 0.01; 0.01
blur							= 0.01
gray							= 0.5
noise_intensity					= 0.1;0.0
noise_grain						= 1
noise_fps						= 30
color_base						= 0.65,0.15,0.1
color_gray						= 0.333,0.333,0.333
color_add						= 0.0,0.0,0.0
time							= 3.00
time_attack						= 0.05		; fade in
time_release					= 0.50		; fade out

; camera effects
ce_time							= 0.30 ;time 
ce_amplitude					= 12.0 
ce_period_number				= 2.0 
ce_power		    			= 1.0 ;0.7 ; power 

[m_lurker_step_params]
;---------------------------------------------------------------------------
;	anim			| Cycles | time1 | power1 | time2 | power2 |
;---------------------------------------------------------------------------
stand_walk_0 	=	   1,	   0.01,    1,	    0.25,    0.7,    
stand_run_fwd_0	=	   1,	   0.01,    1,	    0.25,    0.6,   

;---------------------------------------------------------------------------
; IMMUNITIES
;---------------------------------------------------------------------------
[lurker_immunities]			;--> ;only control health from here, 0.1 means that the mutant will take %10 damage from the source? those are snork's values 
burn_immunity 			= 1.0	;0.66 ;     	= 0.35 				;коэффициенты иммунитета
strike_immunity     	= 1.0	;0.0
shock_immunity 			= 2.0	;0.12 ;      	= 0.1
wound_immunity      	= 0.45	;0.35	;0.02
radiation_immunity   	= 0.0
telepatic_immunity    	= 0.0
chemical_burn_immunity 	= 0.85 ; = 3.0 ;  = 0.45
explosion_immunity    	= 0.9	;0.8	;0.1
fire_wound_immunity   	= 0.6	;0.55	;0.5	;0.1

;=================================================================================
; Terrain
;=================================================================================
[lurker_terrain]
	;255,255,255,255,30,40
	255,000,255,255



;                           fSearchRange,fOptEnemyDistance,fOptEnemyDistanceWeight,fMinEnemyDistance,fMinEnemyDistanceWeight,fMaxEnemyDistance,fMaxEnemyDistanceWeight
;selector_free_hunting  =      20.0,            20.0,                 1000.0,                 0.0,               10000.0,               1000.0,               10000.0,      
;                           fSearchRange,fCoverFromEnemyWeight,fOptEnemyDistance,fOptEnemyDistanceWeight,fMinEnemyDistance,fMinEnemyDistanceWeight,fMaxEnemyDistance,fMaxEnemyDistanceWeight
;selector_cover         =      20.0,            -1000.0,                30.0,                 0.0,                  0.0,              100000.0,             100000.0,               1000.0,
;selector_hear_sound	=      20.0,            1.0,				1000.0,              0.0,               0.0,              1000.0,               10000.0,      
;
;selector_getaway		=      20.0,            20.0,                1000.0,             0.0,               10000.0,		  1000.0,				10000.0,      
;selector_approach		=      20.0,            1.0,                 1000.0,             0.0,               0.0,              1000.0,				10000.0,      
;							  fSearchRange,fOptEnemyDistance,fOptEnemyDistanceWeight,fMinEnemyDistance,fMinEnemyDistanceWeight,fMaxEnemyDistance,fMaxEnemyDistanceWeight
;selector_walk_around	=      20.0,            6.0,                 1000.0,             4.0,               5000.0,					8.0,				5000.0,      


;--=======================================================================
;								Variants
;--=======================================================================

;---------------
; Blue
;---------------
[lurker_1_weak]:m_lurker_e
visual		= monsters\lurker\lurker
corpse_visual	= monsters\lurker\lurker
MaxHealthValue					= 0.5			; range [0..200]

[lurker_1_normal]:m_lurker_e
visual		= monsters\lurker\lurker
corpse_visual	= monsters\lurker\lurker
MaxHealthValue					= 0.75			; range [0..200]

[lurker_1_strong]:m_lurker_e
visual		= monsters\lurker\lurker
corpse_visual	= monsters\lurker\lurker
MaxHealthValue					= 1.0			; range [0..200]

;---------------
; Brown
;---------------
[lurker_2_weak]:m_lurker_e
visual		= monsters\lurker\lurker2
corpse_visual	= monsters\lurker\lurker2
MaxHealthValue					= 0.5			; range [0..200]

[lurker_2_normal]:m_lurker_e
visual		= monsters\lurker\lurker2
corpse_visual	= monsters\lurker\lurker2
MaxHealthValue					= 0.75			; range [0..200]

[lurker_2_strong]:m_lurker_e
visual		= monsters\lurker\lurker2
corpse_visual	= monsters\lurker\lurker2
MaxHealthValue					= 1.0			; range [0..200]

;---------------
; Black
;---------------
[lurker_3_weak]:m_lurker_e
visual		= monsters\lurker\lurker3
corpse_visual	= monsters\lurker\lurker3
MaxHealthValue					= 0.5			; range [0..200]

[lurker_3_normal]:m_lurker_e
visual		= monsters\lurker\lurker3
corpse_visual	= monsters\lurker\lurker3
MaxHealthValue					= 0.75			; range [0..200]

[lurker_3_strong]:m_lurker_e
visual		= monsters\lurker\lurker3
corpse_visual	= monsters\lurker\lurker3
MaxHealthValue					= 1.0			; range [0..200]