@@ -158,6 +158,7 @@ private void updateDisplay(UserProfileData? data)
158158
159159medalInfo . Content = user ? . Achievements ? . Length . ToString ( ) ?? "0" ;
160160ppInfo . Content = user ? . Statistics ? . PP ? . ToLocalisableString ( "#,##0" ) ?? ( LocalisableString ) "0" ;
161+ ppInfo . ContentTooltipText = getPPInfoTooltipText ( user ) ;
161162
162163foreach ( var scoreRankInfo in scoreRankInfos )
163164scoreRankInfo . Value . RankCount = user ? . Statistics ? . GradesCount [ scoreRankInfo . Key ] ?? 0 ;
@@ -234,6 +235,28 @@ private static LocalisableString getCountryRankTooltipText(APIUser? user)
234235return result ?? default ;
235236}
236237
238+ private static LocalisableString getPPInfoTooltipText ( APIUser ? user )
239+ {
240+ var variants = user ? . Statistics ? . Variants ;
241+
242+ LocalisableString ? result = null ;
243+
244+ if ( variants ? . Count > 0 )
245+ {
246+ foreach ( var variant in variants )
247+ {
248+ var variantText = LocalisableString . Interpolate ( $ "{ variant . VariantType . GetLocalisableDescription ( ) } :{ variant . PP . ToLocalisableString ( "#,##0" ) } ") ;
249+
250+ if ( result == null )
251+ result = variantText ;
252+ else
253+ result = LocalisableString . Interpolate ( $ "{ result } \n { variantText } ") ;
254+ }
255+ }
256+
257+ return result ?? default ;
258+ }
259+
237260private partial class ScoreRankInfo : CompositeDrawable
238261{
239262private readonly OsuSpriteText rankCount ;