--- a/src/iuse.cpp +++ b/src/iuse.cpp @@ -289,6 +289,7 @@ static const std::string flag_HEATS_FOOD( "HEATS_FOOD" ); static const std::string flag_PLANT( "PLANT" ); static const std::string flag_PLOWABLE( "PLOWABLE" ); +static const std::string flag_USE_UPS( "USE_UPS" ); // how many characters per turn of radio static constexpr int RADIO_PER_TURN = 25; @@ -2162,7 +2163,8 @@ } } else { // Activated int ch = 1; - if( it->ammo_remaining() > 0 ) { + if( it->ammo_remaining() > 0 || ( it->has_flag( flag_USE_UPS ) && + p->has_enough_charges( *it, false ) ) ) { ch = uilist( _( "Radio:" ), { _( "Scan" ), _( "Turn off" ) } ); @@ -4082,7 +4084,8 @@ if( t ) { // Effects while simply on } else { - if( !it->units_sufficient( *p ) ) { + if( !it->units_sufficient( *p ) || !( it->has_flag( flag_USE_UPS ) && + p->has_enough_charges( *it, false ) ) ) { p->add_msg_if_player( m_info, _( "Your tactical tonfa is out of power." ) ); it->convert( "shocktonfa_off" ).active = false; } else { @@ -4107,7 +4110,8 @@ int iuse::mp3( player *p, item *it, bool, const tripoint & ) { // TODO: avoid item id hardcoding to make this function usable for pure json-defined devices. - if( !it->units_sufficient( *p ) ) { + if( !it->units_sufficient( *p ) || !( it->has_flag( flag_USE_UPS ) && + p->has_enough_charges( *it, false ) ) ) { p->add_msg_if_player( m_info, _( "The device's batteries are dead." ) ); } else if( p->has_active_item( "mp3_on" ) || p->has_active_item( "smartphone_music" ) || p->has_active_item( "afs_atomic_smartphone_music" ) || @@ -6367,9 +6371,12 @@ int iuse::einktabletpc( player *p, item *it, bool t, const tripoint &pos ) { if( t ) { - if( !it->get_var( "EIPC_MUSIC_ON" ).empty() && ( it->ammo_remaining() > 0 ) ) { + if( !it->get_var( "EIPC_MUSIC_ON" ).empty() && + ( it->ammo_remaining() > 0 || ( it->has_flag( flag_USE_UPS ) && + p->has_enough_charges( *it, false ) ) ) ) { if( calendar::once_every( 5_minutes ) ) { - it->ammo_consume( 1, p->pos() ); + //it->ammo_consume( 1, p->pos() ); + p->consume_charges( *it, 1 ); } //the more varied music, the better max mood.