У меня тож такая (или похожая) проблема была, уже не помню из-за чего и как решил, но получилось вот так (осколочная граната):
# item
["frag_grenades", "Fragmentation grenades", [("throwing_stone",0)], itp_unique|itp_type_thrown|itp_primary, itcf_throw_stone, 255, weight(4)|difficulty(0)|spd_rtng(87) | shoot_speed(30) | thrust_damage(15, blunt)|max_ammo(9)|weapon_length(8),imodbits_none,
[(ti_on_missile_hit,
[
(copy_position, pos2, pos1),
(particle_system_burst, "psys_explode_smoke_1", pos2, 24),
(particle_system_burst, "psys_ground_blastoff", pos2, 100),
(play_sound_at_position, "snd_pistol_shot", pos2, 1),
(store_trigger_param_1, ":agent"),
(try_for_agents, ":agent_2"), # blast damage
(agent_get_position, pos3, ":agent_2"),
(get_distance_between_positions, ":distance", pos3, pos2),
(lt, ":distance", 200),
(val_clamp, ":distance", 50, 200),
(store_sub, ":distance", 200, ":distance"),
(val_div, ":distance", 2),
(agent_deliver_damage_to_agent, ":agent", ":agent_2", ":distance", "itm_frag_grenades"),
(try_end),
(assign, ":num_shatters", 30),
(assign, ":shatters_used", 0),
(try_for_agents, ":agent_2"), # shatter damage
(ge, ":num_shatters", ":shatters_used"),
(agent_get_position, pos3, ":agent_2"),
(get_distance_between_positions, ":distance", pos3, pos2),
(lt, ":distance", 2000),
(val_add, ":shatters_used", 1),
(agent_is_in_line_of_sight, ":agent_2", pos2),
(store_random_in_range, ":gear", 0, 2050),
(lt, ":distance", ":gear"),
(val_div, ":distance", 25),
(store_sub, ":distance", 80, ":distance"),
(val_max, ":distance", 15),
(agent_deliver_damage_to_agent, ":agent", ":agent_2", ":distance", "itm_frag_grenades"),
(try_end),
]),]],
# particles
("ground_blastoff", psf_billboard_3d|psf_global_emit_dir|psf_always_emit|psf_randomize_size, "prt_mesh_blood_1",
500, 1.75, 0.4, 1.2, 0, 0, #num_particles, life, damping, gravity_strength, turbulance_size, turbulance_strength
(0.0, 1), (0.9, 0.88), #alpha keys
(0.1, 0.4), (1, 0.4), #red keys
(0.1, 0.7), (1, 0.7), #green keys
(0.1, 0.5), (1, 0.5), #blue keys
(0.0, 0.35), (1, 0.17), #scale keys
(1.5, 1.5, 0.25), #emit box size
(0, 0, 13), #emit velocity
3.2, #emit dir randomness
0, #rotation speed
0, #rotation damping
),
("explode_smoke_1", psf_billboard_3d|psf_global_emit_dir|psf_always_emit, "prt_mesh_dust_1",
10, 0.9, 1.5, 1, 25, 1, #num_particles, life, damping, gravity_strength, turbulance_size, turbulance_strength
(0.3, 0.4), (1, 0), #alpha keys
(0.5, 0.7), (1, 0.1), #red keys
(0.5, 0.7), (1, 0.1), #green keys
(0.5, 0.7), (1, 0.1), #blue keys
(0.66, 5), (1, 15), #scale keys
(0.75, 0.75, 0.25), #emit box size
(0, 3, 14), #emit velocity
1, #emit dir randomness
20, #rotation speed
-4 #rotation damping
),