r2mods/ilspy_dump/ror2_csproj/RoR2.Achievements/RepeatFirstTeleporterAchiev...

68 lines
1.9 KiB
C#

using System;
using RoR2.Stats;
namespace RoR2.Achievements;
[RegisterAchievement("RepeatFirstTeleporter", "Characters.Toolbot", null, 3u, typeof(RepeatFirstTeleporterServerAchievement))]
public class RepeatFirstTeleporterAchievement : BaseAchievement
{
private class RepeatFirstTeleporterServerAchievement : BaseServerAchievement
{
public override void OnInstall()
{
base.OnInstall();
TeleporterInteraction.onTeleporterChargedGlobal += OnTeleporterCharged;
}
public override void OnUninstall()
{
TeleporterInteraction.onTeleporterChargedGlobal -= OnTeleporterCharged;
base.OnUninstall();
}
private void OnTeleporterCharged(TeleporterInteraction teleporterInteraction)
{
SceneCatalog.GetSceneDefForCurrentScene();
_ = base.networkUser.masterPlayerStatsComponent.currentStats;
if ((bool)Run.instance && Run.instance.stageClearCount == 0)
{
PlayerStatsComponent masterPlayerStatsComponent = base.networkUser.masterPlayerStatsComponent;
if ((bool)masterPlayerStatsComponent)
{
masterPlayerStatsComponent.currentStats.PushStatValue(StatDef.firstTeleporterCompleted, 1uL);
}
}
}
}
private const int requirement = 5;
public override void OnInstall()
{
base.OnInstall();
UserProfile obj = base.userProfile;
obj.onStatsReceived = (Action)Delegate.Combine(obj.onStatsReceived, new Action(Check));
SetServerTracked(shouldTrack: true);
}
public override void OnUninstall()
{
UserProfile obj = base.userProfile;
obj.onStatsReceived = (Action)Delegate.Remove(obj.onStatsReceived, new Action(Check));
base.OnUninstall();
}
private void Check()
{
if (base.userProfile.statSheet.GetStatValueULong(StatDef.firstTeleporterCompleted) >= 5)
{
Grant();
}
}
public override float ProgressForAchievement()
{
return (float)base.userProfile.statSheet.GetStatValueULong(StatDef.firstTeleporterCompleted) / 5f;
}
}