// Range: -1 Access: 0 Flags: ( 0, 4, 255 )
		public static Tile get_turf_pixel( BaseStatic AM = null ) {
			Matrix M = null;
			double pixel_x_offset = 0;
			double pixel_y_offset = 0;
			Icon AMicon = null;
			int rough_x = 0;
			int rough_y = 0;
			dynamic T = null;
			dynamic final_x = null;
			dynamic final_y = null;
			if ( !( AM is BaseDynamic ) ) {
				return null;
			}
			M = Num13.matrix( ((dynamic)AM).transform );
			pixel_x_offset = AM.pixel_x + Lang13.Double( M.get_x_shift() );
			pixel_y_offset = AM.pixel_y + Lang13.Double( M.get_y_shift() );
			if ( Lang13.Int( ((dynamic)AM).bound_height ) != Game13.icon_size || Lang13.Int( ((dynamic)AM).bound_width ) != Game13.icon_size ) {
				AMicon = new Icon( ((dynamic)AM).icon, ((dynamic)AM).icon_state );
				pixel_x_offset += ( AMicon.Width() / Game13.icon_size - 1 ) * Game13.icon_size * 0.5;
				pixel_y_offset += ( AMicon.Height() / Game13.icon_size - 1 ) * Game13.icon_size * 0.5;
				GlobalFuncs.qdel( AMicon );
			}
			rough_x = Num13.floor( Num13.round( pixel_x_offset, Game13.icon_size ) / Game13.icon_size );
			rough_y = Num13.floor( Num13.round( pixel_y_offset, Game13.icon_size ) / Game13.icon_size );
			T = GlobalFuncs.get_turf( AM );
			final_x = T.x + rough_x;
			final_y = T.y + rough_y;
			if ( Lang13.Bool( final_x ) || Lang13.Bool( final_y ) ) {
				return Map13.get_tile_at( Lang13.Int( final_x ), Lang13.Int( final_y ), Lang13.Int( T.z ) );
			}
			return null;
		}
		// Range: -1 Access: 0 Flags: ( 0, 4, 255 )
		public static void smooth_icon_neighbors( BaseStatic A = null ) {
			dynamic V = null;
			dynamic T = null;
			V = null;
			foreach (dynamic _a in Map13.fetch_in_range_nocenter( A, 1 ) ) {
				V = _a;
				T = V;
				if ( Lang13.Bool( T.smooth ) ) {
					GlobalFuncs.smooth_icon( T );
				}
			};
			return;
		}
		// Range: -1 Access: 0 Flags: ( 0, 4, 255 )
		public static Tile get_ranged_target_turf( BaseStatic A = null, int? direction = null, int range = 0 ) {
			int x = 0;
			int y = 0;
			x = Lang13.Int( ((dynamic)A).x );
			y = Lang13.Int( ((dynamic)A).y );
			if ( ( ( direction ??0) & 1 ) != 0 ) {
				y = Num13.minInt( Game13.map_size_y, y + range );
			}
			if ( ( ( direction ??0) & 2 ) != 0 ) {
				y = Num13.maxInt( 1, y - range );
			}
			if ( ( ( direction ??0) & 4 ) != 0 ) {
				x = Num13.minInt( Game13.map_size_x, x + range );
			}
			if ( ( ( direction ??0) & 8 ) != 0 ) {
				x = Num13.maxInt( 1, x - range );
			}
			return Map13.get_tile_at( x, y, Lang13.Int( ((dynamic)A).z ) );
		}
		// Range: -1 Access: 0 Flags: ( 0, 4, 255 )
		public static dynamic blood_splatter( BaseStatic target = null, BaseData source = null, bool? large = null ) {
			dynamic B = null;
			Type decal_type = null;
			dynamic T = null;
			BaseData M = null;
			BaseData donor = null;
			ByTable drips = null;
			Ent_Effect_Decal_Cleanable_Blood_Drip drop = null;
			dynamic drop2 = null;
			decal_type = typeof(Ent_Effect_Decal_Cleanable_Blood_Splatter);
			T = GlobalFuncs.get_turf( target );
			if ( source is Mob_Living_Carbon_Human ) {
				M = source;
				source = ((Mob_Living_Carbon)M).get_blood( ((dynamic)M).vessel );
			} else if ( source is Mob_Living_Carbon_Monkey ) {
				donor = source;
				source = new Reagent_Blood();
				((dynamic)source).data["blood_DNA"] = ((dynamic)donor).dna.unique_enzymes;
				((dynamic)source).data["blood_type"] = ((dynamic)donor).dna.blood_type;
			}
			drips = new ByTable();
			drop = null;
			foreach (dynamic _a in T ) {
				if ( !( _a is Ent_Effect_Decal_Cleanable_Blood_Drip ) ) {
					continue;
				}
				drop = _a;
				drips |= drop.drips;
				GlobalFuncs.qdel( drop );
			};
			if ( !( large == true ) && drips.len < 3 ) {
				decal_type = typeof(Ent_Effect_Decal_Cleanable_Blood_Drip);
			}
			B = Lang13.find_in( decal_type, T );
			if ( !Lang13.Bool( B ) ) {
				B = Lang13.call( decal_type, T );
			}
			drop2 = B;
			if ( drop2 is Ent_Effect_Decal_Cleanable_Blood_Drip && drips != null && drips.len != 0 && !( large == true ) ) {
				drop2.overlays |= drips;
				drop2.drips |= drips;
			}
			if ( !( source != null ) ) {
				return B;
			}
			if ( Lang13.Bool( ((dynamic)source).data["blood_DNA"] ) ) {
				B.blood_DNA = new ByTable();
				if ( Lang13.Bool( ((dynamic)source).data["blood_type"] ) ) {
					B.blood_DNA[((dynamic)source).data["blood_DNA"]] = ((dynamic)source).data["blood_type"];
				} else {
					B.blood_DNA[((dynamic)source).data["blood_DNA"]] = "O+";
				}
			}
			return B;
		}