diff --git a/src/ballistics.cpp b/src/ballistics.cpp index 3094b1af24ccb..4d051b3c689e2 100644 --- a/src/ballistics.cpp +++ b/src/ballistics.cpp @@ -442,10 +442,13 @@ dealt_projectile_attack projectile_attack( const projectile &proj_arg, const tri // Critter can still dodge the projectile // In this case hit_critter won't be set if( attack.hit_critter != nullptr ) { - const size_t bt_len = blood_trail_len( attack.dealt_dam.total_damage() ); - if( bt_len > 0 ) { - const tripoint &dest = move_along_line( tp, trajectory, bt_len ); - here.add_splatter_trail( critter->bloodType(), tp, dest ); + const field_type_id blood_type = critter->bloodType(); + if( blood_type ) { + const size_t bt_len = blood_trail_len( attack.dealt_dam.total_damage() ); + if( bt_len > 0 ) { + const tripoint &dest = move_along_line( tp, trajectory, bt_len ); + here.add_splatter_trail( blood_type, tp, dest ); + } } sfx::do_projectile_hit( *attack.hit_critter ); has_momentum = false; diff --git a/src/game.cpp b/src/game.cpp index c0435d3ffca2f..679134a515c49 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -8747,9 +8747,10 @@ static void butcher_submenu( const std::vector &corpses, in corpses[index]->has_flag( flag_FIELD_DRESS_FAILED ) ) ) { has_organs = true; } - if( entry.type == harvest_drop_blood && !( corpses[index]->has_flag( flag_QUARTERED ) || - corpses[index]->has_flag( flag_FIELD_DRESS ) || - corpses[index]->has_flag( flag_FIELD_DRESS_FAILED ) || corpses[index]->has_flag( flag_BLED ) ) ) { + if( entry.type == harvest_drop_blood && dead_mon->bleed_rate > 0 && + !( corpses[index]->has_flag( flag_QUARTERED ) || + corpses[index]->has_flag( flag_FIELD_DRESS ) || + corpses[index]->has_flag( flag_FIELD_DRESS_FAILED ) || corpses[index]->has_flag( flag_BLED ) ) ) { has_blood = true; } } diff --git a/src/mtype.cpp b/src/mtype.cpp index 77d34069bb2c8..4da923ca01126 100644 --- a/src/mtype.cpp +++ b/src/mtype.cpp @@ -153,9 +153,11 @@ std::vector mtype::species_descriptions() const field_type_id mtype::get_bleed_type() const { - for( const species_id &s : species ) { - if( !s->bleeds.is_empty() ) { - return s->bleeds; + if( bleed_rate > 0 ) { + for( const species_id &s : species ) { + if( !s->bleeds.is_empty() ) { + return s->bleeds; + } } } return fd_null;