--- a/src/iexamine.cpp +++ b/src/iexamine.cpp @@ -4866,18 +4866,30 @@ return; } - if( !p.has_charges( "fire", 1 ) ) { + const bool has_bionic_firestarter = p.has_bionic( bio_lighter ) && + p.enough_power_for( bio_lighter ); + + if( !has_bionic_firestarter && !p.has_charges( "fire", 1 ) ) { add_msg( _( "This smoking rack is ready to be fired, but you have no fire source." ) ); return; } else if( !query_yn( _( "Fire the smoking rack?" ) ) ) { return; } - p.use_charges( "fire", 1 ); - for( auto &it : g->m.i_at( examp ) ) { - if( it.has_flag( flag_SMOKABLE ) ) { - it.process_rot( 1, false, examp, nullptr ); - it.set_flag( flag_PROCESSING ); + if( has_bionic_firestarter ) { + for( auto &it : g->m.i_at( examp ) ) { + if( it.has_flag( flag_SMOKABLE ) ) { + it.process_rot( 1, false, examp, nullptr ); + it.set_flag( flag_PROCESSING ); + } + } + } else { + p.use_charges( "fire", 1 ); + for( auto &it : g->m.i_at( examp ) ) { + if( it.has_flag( flag_SMOKABLE ) ) { + it.process_rot( 1, false, examp, nullptr ); + it.set_flag( flag_PROCESSING ); + } } } g->m.furn_set( examp, next_smoker_type );