- gib.move_origin = gib.origin = org;
- gib.move_velocity = vconst * cvar_or("cl_gibs_velocity_scale", 1) + vrand * cvar_or("cl_gibs_velocity_random", 1) + '0 0 1' * cvar("cl_gibs_velocity_up");
- gib.move_avelocity = prandomvec() * vlen(gib.move_velocity);
+ // don't spawn gibs inside solid - just don't
+ if(org != safeorg)
+ {
+ tracebox(safeorg, gib.mins, gib.maxs, org, MOVE_NOMONSTERS, gib);
+ org = trace_endpos;
+ }
+
+ gib.move_origin = org;
+ setorigin(gib, org);
+ gib.move_velocity = vconst * autocvar_cl_gibs_velocity_scale + vrand * autocvar_cl_gibs_velocity_random + '0 0 1' * autocvar_cl_gibs_velocity_up;
+ gib.move_avelocity = prandomvec() * vlen(gib.move_velocity) * autocvar_cl_gibs_avelocity_scale;