
[m_cat_e]:monster_base
GroupControlSection		= spawn_group
;$spawn					= "monsters\cat"	; option for Level Editor
$npc					= on				; option for Level Editor
;$prefetch				= 16

class					= SM_CAT_S			; AI class
visual					= monsters\cat\cat
corpse_visual			= monsters\cat\cat
icon					= ui_npc_monster_cat

species					= cat

script_binding			= bind_monster.bind

ef_creature_type		= 2
ef_weapon_type			= 2
ef_detector_type		= 1
panic_threshold			= 0.1

bone_torso				= bip01_spine1
bone_head				= bip01_head
bone_fire				= bip01_head
bone_drag				= bip01_tail2

max_threat_distance		= 10		; расстояние, до которого не допускается игнор монстра сталкерами
max_ignore_distance		= 15		; расстояние ингора враждебных монстров
parts_cut_count			= 150

;------------------------------------------------------------------------
; Offline Alife
;------------------------------------------------------------------------
Scheduled					= on				; option for ALife Simulator
Human						= off				; option for ALife Simulator
Health						= 150				; option for ALife Simulator
MinSpeed					= 1.0				; option for ALife Simulator
MaxSpeed					= 1.5				; option for ALife Simulator
going_speed					= 1.0				; option for ALife Simulator
;current_level_going_speed	= 1.5				; option for ALife Simulator
MaxHealthValue				= 100				; range [0..200]
;------------------------------------------------------------------------
; Influences
;------------------------------------------------------------------------
psy_max_distance			= 0
psy_max_power				= -0.03

radiation_max_distance		= 2.0
radiation_max_power			= -0.02
;---------------------------------------------------------------------
; Physics
;---------------------------------------------------------------------
ph_box0_center				= 0.0,  0.3,  0.0
ph_box0_size				= 0.35, 0.3,  0.35
ph_box1_center				= 0.0,  0.3,  0.0
ph_box1_size				= 0.35, 0.3,  0.35
ph_crash_speed_min			= 10
ph_crash_speed_max			= 30
ph_collision_damage_factor	= 0.1
ph_mass						= 40		; also it's the food

;actor_restrictor			= medium_monster ;medium_monster,stalker,none
destroyed_vis_name			= physics\dead_body\skelet_crash_monster

;---------------------------------------------------------------------
ph_skeleton_collision_enabled	= true
;ph_skel_fatal_impulse_factor	= 1.0
;ph_after_death_velocity_factor	= 1.0
ph_skel_shot_up_factor			= 0.3

;----------------------------------------------------------------------------
; Movement::Velocities & Acceleration
;----------------------------------------------------------------------------
; speed factors            linear | angular_real | angular_path | min |  max
Velocity_Stand				= 0,		3.0,			3.0,		1,		1
Velocity_WalkFwdNormal		= 1.2,		2.7,			2.5,		0.4,	2.0
Velocity_WalkFwdDamaged		= 1.2,		1.7,			1.5,		0.4,	2.0
Velocity_RunFwdNormal		= 7.8,		3.0,			2.8,		0.25,	1
Velocity_RunFwdDamaged		= 4.5,		1.6,			1.4,		0.25,	1
Velocity_Drag				= 0.4,		0.25,			0.25,		1,		1
Velocity_Steal				= 1.3,		1.2,			1.0,		1,		1

; acceleration
Accel_Calm				= 2.5
Accel_Aggressive		= 12	;4.5

;---------------------------------------------------------------------
; Squad seperation behaviour (расталкивание)
;---------------------------------------------------------------------
separate_factor			= 1.5	; сила расталкивания
separate_range			= 5.5	; радиус в котором расталкивание действует

;--------------------------------------------------------------------------
; Attack parameters
;--------------------------------------------------------------------------
attack_params			= m_cat_attack_params

MinAttackDist			= 1.8
MaxAttackDist			= 2.3	;	max  2*MinAttackDist-as_min_dist
as_min_dist				= 1.4
as_step					= 0.2

Melee_Rotation_Factor	= 2.4
hit_type				= wound
;------------------------------------------------------------------------
; Attack On Move
;------------------------------------------------------------------------
aom_enabled				=	0.6
aom_animation_left		=	stand_attack_1
aom_animation_right		=	stand_attack_1
aom_far_radius			=	6
aom_max_go_close_time	=	6
aom_prepare_time		=	3
aom_attack_radius		=	0.6
aom_update_side_period	=	3
aom_prediction_factor	=	1.2
aom_can_break			=	true
aom_max_fails			=	2
aom_pause_time_min		=	6
aom_pause_time_max		=	9
;--------------------------------------------------------------------------
; Jump parameters
;--------------------------------------------------------------------------
jump_enabled				= 1
jump_delay					= 10000
jump_factor					= 1.8
jump_ground_trace_range		= 0.8
jump_hit_trace_range		= 1.2
jump_build_line_distance	= 3.0	;2.5	;0
jump_min_distance			= 3.0
jump_max_distance			= 7.5
jump_max_angle				= 0.3
jump_max_height				= 4.6
jump_auto_aim_factor		= 0		;0.4
jump_predict_factor			= 1.25
jump_predict_prob			= 0.4
;-------------------------------------------------------------------------
; Entity Conditions
;-------------------------------------------------------------------------
satiety_v				= 0.0001			;скорость уменьшения сытости со временем
radiation_v				= 0.00001			;скорость уменьшения радиации
;satiety_power_v		= 0.005				;увеличение силы при уменьшении сытости
;satiety_health_v		= 0.001				;увеличение здоровья при уменьшении сытости
radiation_health_v		= 0.01				;уменьшение здоровья при воздействии радиации
morale_v				= 0.01				;скорость восстановления морали
health_hit_part			= 0.8				;процент хита, уходящий на отнимание здоровья
power_hit_part			= 1.0				;процент хита, уходящий на отнимание силы
psy_health_v			= 0.1				;скорость восстановления psy-здоровья

immunities_sect			= cat_immunities
protections_sect		= cat_weak_protections
hit_slowdown			= 0.6, 0.6

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

;Eat settings
eat_freq				= 1.0		; частота укусов в сек
eat_slice				= 0.01		; увеличение сытости при 1 укусе
eat_health				= 0.0025	; увеличение здоровья при 1 укусе
eat_slice_weight		= 40		; уменьшение еды у трупа
satiety_threshold		= 0.7		; below this value monster fill hunger
;-------------------------------------------------------------------------
; Morale
;-------------------------------------------------------------------------
Morale_Hit_Quant				= 0.1
Morale_Attack_Success_Quant		= 0.1
Morale_Take_Heart_Speed			= 0.1
Morale_Despondent_Speed			= 0.1
Morale_Stable_Speed				= 0.05
Morale_Despondent_Threashold	= 0.5
;---------------------------------------------------------
; Sounds and sound parameters
;---------------------------------------------------------
sound_idle				= monsters\cat\cat_idle_
sound_eat				= monsters\cat\cat_eat_
sound_aggressive		= monsters\cat\cat_aggressive_
sound_attack_hit		= monsters\cat\cat_attack_hit_
sound_take_damage		= monsters\cat\cat_hurt_
sound_die				= monsters\cat\cat_die_
sound_threaten			= monsters\biting\def_
sound_steal				= monsters\biting\def_
sound_panic				= monsters\cat\cat_panic_
;sound_growling			= monsters\biting\def_
sound_die_in_anomaly	= monsters\cat\die_
sound_distant_idle		= monsters\cat\cat_dist_

killer_clsids			= ZS_AMEBA,ZS_HAIRS,ZS_MBALD,ZS_MINEF,ZS_GALAN,ZS_MINCE,ZS_GRAVI,ZS_CAMPF,ZS_TORRD

idle_sound_delay		= 55000
eat_sound_delay			= 2000
attack_sound_delay		= 6000

distant_idle_sound_delay	= 90000
distant_idle_sound_range	= 100

SoundThreshold			= 0.06			; range [0..1]
SoundThreshold_Sleep	= 0.18
max_hear_dist			= 95
;-------------------------------------------------------------------------
; Damages
;-------------------------------------------------------------------------
DamagedThreshold			= 0.4
damage						= m_cat_damage

critical_wound_threshold		= -1
critical_wound_decrease_quant	= 0
;-------------------------------------------------------------------------
; Other Stuff (refactoring needed)
;-------------------------------------------------------------------------
DayTime_Begin			= 12	; начало дня для монстра
DayTime_End				= 2		; конец дня для монстра
sleep_time				= 7.5	; сколько часов нужно спать

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

terrain					= 255,000,255,255
material				= creatures\small

step_params				= m_cat_step_params
LegsCount				= 4
;-------------------------------------------------------------------------
; Vision
;-------------------------------------------------------------------------
eye_fov					= 120	;140
eye_range				= 50
eye_rotation			= 0, 0.5

vision_free_section		= cat_vision_free
vision_danger_section	= cat_vision_danger

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

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

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

[m_cat_attack_params]
;---------------------------------------------------------------------------------------------------------------------------------------------
;    anim            | time[0..1] | hit_power | impulse | impulse_dir (x,y,z)  |    Field of hit_test  (left,right, top, bottom) |    Test Dist
;---------------------------------------------------------------------------------------------------------------------------------------------
stand_attack_0		=	0.35,		0.2,		20,			0.0, 0.5, 1.0,			-1.1, 1.1, -1.2, 1.2,								2.5
stand_attack_1		=	0.45,		0.2,		30,			0.0, 0.5, 1.0,			-1.1, 1.1, -1.6, 1.2,								2.5
stand_attack_rat_0	=	0.40,		0.4,		50,			0.0, -0.5,1.0,			-0.6, 0.6, -1.6, 0.6,								1.5

run_jamp_1			=	0.40,		0.15,		400,		0.0, -0.5,1.0,			-0.8, 0.8, -1.2, 1.2,								0
;jump_attack_2		=	0.50,		0.6,		200,		0.0, -0.5,1.0,			-0.6, 0.6, -1.6, 0.6,								2.0

[m_cat_step_params];             fwdleftleg       fwdrightleg     backrightleg     backleftleg
;-------------------------------------------------------------------------------------------------------------
;    anim            | cycles | time1 | power1 | time2 | power2 | time3 | power3 | time4 | power4 |
;-------------------------------------------------------------------------------------------------------------
stand_walk_fwd_0	=	3,		0.75,	0.25,	0.25,	0.25,		0.95,	0.25,	0.45,	0.25
stand_walk_dmg_0	=	3,		0.75,	0.4,	0.25,	0.4,		0.7,	0.4,	0.3,	0.2
stand_run_fwd_0		=	1,		1.0,	0.5,	0.25,	0.5,		0.56,	0.5,	0.42,	0.5
stand_run_dmg_0		=	4,		0.46,	0.7,	0.2,	0.7,		0.52,	0.7,	0.8,	0
stand_steal_0		=	1,		0.78,	0.05,	0.3,	0.05,		0.86,	0.05,	0.41,	0.05
stand_drag_0		=	1,		0.68,	0.2,	0.46,	0.2,		0.38,	0.2,	0.19,	0.2

stand_run_look_left =	1,		1.0,	0.5,	0.25,	0.5,		0.56,	0.5,	0.42,	0.5
stand_run_look_right=	1,		1.0,	0.5,	0.25,	0.5,		0.56,	0.5,	0.42,	0.5

run_turn_180_r_0	=	2,		0.01,	0.5,	0.35,	0.5,		0.7,	0.5,	0.5,	0.5
run_turn_180_r_1	=	1,		0.54,	0.5,	0.6,	0.5,		0.75,	0.5,	0.66,	0.5

stand_jump_ls_0		=	1,		0.62,	0.7,	0.66,	0.7,		0.76,	0.7,	0.7,	0.7
stand_jump_rs_0		=	1,		0.62,	0.7,	0.66,	0.7,		0.76,	0.7,	0.7,	0.7

run_jamp_0			=	1,		0.0,	0.7,	0.26,	0.7,		0.56,	0.9,	0.4,	0.9
run_jamp_2			=	1,		0.08,	0.7,	0.17,	0.7,		0.57,	0.7,	0.38,	0.7

[m_cat_damage]
;bone_name			= <hit_scale>,-1,<wound_scale>
;<hit_scale>		- коэфф. изменения хита (уменьшения здоровья)
;<wound_scale>		- коэфф. изменения величины открытой раны

default				= 0.6, -1, 0.4

bip01_tail1			= 0.2, -1, 0.2
bip01_tail2			= 0.1, -1, 0.2
bip01_pelvis		= 1.0, -1, 0.6
bip01_spine			= 1.0, -1, 0.6
bip01_spine1		= 1.0, -1, 0.6
bip01_spine2		= 1.0, -1, 0.6
bip01_neck			= 1.2, -1, 1.5
bip01_head			= 2.5, -1, 0.6, 3.0, 4.0

;===========================================================================
; IMMUNITIES
;===========================================================================
[cat_immunities]
burn_immunity 				= 0.8
strike_immunity 			= 0.5
shock_immunity 				= 1.0
wound_immunity 				= 0.5
radiation_immunity 			= 0
telepatic_immunity 			= 1.0
chemical_burn_immunity 		= 0.8
explosion_immunity 			= 1.2
fire_wound_immunity  		= 0.8


;*********************************************************************************
; PROFILES
;*********************************************************************************

[cat_weak]:m_cat_e
$spawn = "monsters\cat_weak"
rank				= 101
spec_rank			= weak

protections_sect	= cat_weak_protections
health_hit_part		= 0.8
hit_power_factor	= 1.0
hit_impulse_factor	= 1.0
jump_probability	= 0.5
jump_delay			= 7000

[cat_weak_protections]
skin_armor = 0.1
hit_fraction_monster = 0.8


[cat_normal]:m_cat_e
$spawn				= "monsters\cat_normal"
rank				= 401
spec_rank			= normal

protections_sect	= cat_normal_protections
health_hit_part		= 0.6
hit_power_factor	= 1.3
hit_impulse_factor	= 1.2
jump_probability	= 0.9
jump_delay			= 4000

[cat_normal_protections]
skin_armor = 0.15
hit_fraction_monster = 0.8

